HISE Logo Forum
    • Categories
    • Register
    • Login

    creating a multiband gui

    Scheduled Pinned Locked Moved General Questions
    18 Posts 6 Posters 1.0k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • StraticahS
      Straticah
      last edited by

      hey there, so i had the idea of using tables to show the frequency split of my multiband setup.
      Any idea what kind of calculation i should use in scriptnode to set these closer to the crossover points?
      ba617fa7-9426-490f-a1e7-b3c6e0e58bde-image.png

      If anybody has a better idea let me know aswell, i have not stumbled across a solution that lets me adjust the bands inside the waveform display directly like other multiband processors do, so i went for this. :)

      HiseSnippet 2818.3oc6azzaabbcWIMRhL1oIownE8PvV2VDJTYZtKI0G0nvTeQY1XIQHpHaDCW0g6NjbCWtK6tCsLcpAJPujSMWat49GnGRt2ZjqsE8ibnW6khhdonn+AZeyr6xcVJR8AsjrUUErk47l488adyadCcYWGchmmiqjbhc51lHIeETkt1zFqz.aZKUZUI4qgZ0whZVEaarmGl1wESgkub21XOOhgjr73qyVpbhIj3+7ut8xXKrsNIBjjztNl5j6Z1xjFAsbg2yzxpH1friYKgUmqPIcG6Ubrb5.h03nLRsw5Mw0IahYKaLjj7jqYXBRQEJlR7jjmXYGitUZ3rus+520zyrpEgMPUpBPHevEcrLXRL6yRqzvzxnbn56IIIiJGYLF22X71nMLML6AOxn7F7IThvPzdHOVbwa7Xhmpn3kQP7FfHIKHRS3KRuIphtqYaZzLL440PkroD2ZXvrKJJ9qUZr2BgVwAVgMMcKbSRQWXPOLRMWlLyp.+ZlakDVkmiEIstEA6lB.j7l2TYk6rzlqulxN2YMkJk9f0T1pH+yK+9EKt119fJsIGz6VYksKUdGkh2W8cUbrKYaRUB.kLI3U8nJOB6pz11pXM5pldssvcU99JgxVcBcEmVscrgAotdrUccPVhHfGDanS.L4AqL7BV1xcpUi3VgOcpq2KdkgcxXzKsAlhSWku7L.g7o3AnTJlQY.H1FSajQPx0cIfytL.kazbI0UXzlsDeBErhTCWHX7daB1Hfwyj1hXWm13fRtGgVFBDoa6zgZZSRUqisN0zwNU8YR9QISvrOXfuzFldLZdWGcr0xNcrM73ZCeA6CK.+.sGFLrAeXV1vjIpy3f+9uT9+iW58MoMVxpcCbDjFlTxrJYRO2LLhVOsgKdetAfy3HqzrJO.9K7mPA5dlFLyTDf6PLq2flZlGNqhZZtHFHDq6hMLAyaQHQQpGLbYwhguWytUs5vEob.w2+lZbtNbrZYZXyPLDK0PrZ7PeMpFv1WPMBHzSGnGjkyycErkUUH4VjKj6AiXWXngtS6tBwF7PqYtUBemW0ZgdaQb.llnO4FVV0ZhgpCNDgodoyv8Ebs7FpOjYd7YHGEWRaV.Xp.sqOkihc8UuTpybqPMCxFroCkrUfJl7oIU5epZ0F3brsXtNVVr8DCXZeNcHHlxtSqpD2YgDGfit2BgLpwSSiFdZZwSQz82wKrP+7ba0lDL9fIxkBRS.ozmHPpfOQ4IzuZPB8cvLlYBosmFw+rpDWfEOFk4Jkj+NHsboi+yi1B9UsuqvXeddrXj1oEiF2mQud.ipXYZPb4bZJz6Y6TMtF8r1arWgiOxwkxms967KKH89kVkInvIcAFXvn2l3RMY9S4UIOBp5v+XyDnUIdMoNskjS16HF3bSZv479LsnkCFRoVeGy.KzWAIBRU5whFothCBD.etAnYZAmtFrkPpZ8vxYRfxlMe9b4xJAYOaEB8JnbZKlaw4lWaw7BSnABKRct4medM07RbUU9tnOJohx06EcUx35eOEgC5lkMaIaCxiA3Y3if5drb1+dNtM8fJoH.7ZXKORxmJsOKuED4Ke+wjjZvyYwF8q8UnQzJocQyJo9xvJk8hlUR6kgUJ2EMqT1WFVo7WzrR4NcrRScjmfNb6xgvh1Q5.6lUQW5Uj2SejGpd5xaJinb6WXQFQxxjwkkxXahUPXRrRyFMQRjSW4HOgeHr340K3Q6ZwavvcbbMeBDVhsFFaemCyRzF6haQfn3Rb1tL11PUpkXKHxUnENRN93ur.TougEorimIqzvdyT3SJbRTtg5R+oMOKUNsQW4NX6CdCzFNFcrX7RraFrV3DLAiFhsPf0l.af1cEawS+s3XhiWKNh5.y.qR9XJtuIprIUuwfk2wFf7BEHdVKuAML5pn0fKeoSiD1IPEu+4P2glxm+ICOv39AsEZvcrayNs3IoX25QFBNk..9mLvgf7gDqQH7IjgIBZoj7GihtqUa1EBcI63TFVeJObq1Vjswr1CT0xQuYEymPN3EzB1CrLaEozafsgrVdix83l7XaPUOTCpjeCUpuAl5ZBawPfMvuSRqDHcglqfwYXiYgWUH1F7A+G3mfIU6YvHrDTASFcSPoMIz8Ym8w7jAeF7i8611EL87s0SgfqfmNizRrCMYYsLCB9A+IGVYGqtsa3Xapy.4uhPIeoVvk6ogh+cvd6fMsX6VpzwCt2pwV1UfEyaZKKBcSGC3SSVDqChPWVqBX65X27EBqY8xpW38fivX1WFMBqiv2JAhTKdh1wPRL+S4vbcrKqMFDUBXvrFArGwnOBUqFUJlfbUD1Fa00ijlM0Igo9VEKxiCu0XeQ38CAF26DWHfQPd468CuoojTf8hIvWEUyk7i2CnhIMmzPsf74OfUfEgdxTHQYRdrdi.gYCS6c8uv7jHMVfyF3GG.HA..9AfUoIYeeYjUrYlzZZKtXlb4yuPt4VXtrKnw8wSyOFRA1IEdA7e3+9G7Y23etagk5PcZA653Id4WB2lv205EzoifgA9T+yzrbU2SMxX5eBXQvn0AB.6xqXcvnoMZnk8ji1UQ5rzi6wK5JNxSg7sBRmo1ZsHa8u3az7a869Ke9naq0FMas1nYqOwn85h15rCwXGlZXbgTCSgpxK86HxRcx1OExnIhwH+P1XL5ZnOzvqc5Ozxzt49lzm3B4O6Fi7rKOsPtEmew7KtPeRwglTJ7f3deThUTSuzPqAGBZ.Uk3esKf.RCMG.5EItbNMsr4VX9ExGjmOxOJDIxKLZvbDghyPDRiwLJoMqb.1XUXLi1Sh3EuDCuAkeUvYn8JfyXBzMTuD3MzFh2H3zNwDk84Sz8qaKs3RNI6FCq9FpHYh9bKAUuF9oCaGxQzD6Z4erZms5ysIKXDm3vLhgFsvDUGvYHZ2htvxNX25DZeQ1SiL5zpU29xyjDAzqQ5VcrNP7buNybHwyic5nWwlHtVMzph32OgMpKy8rJSlK4sKaVc3xwATDpG8.oz0NaRoOdeYQzFwT5KnkWUK6hmZozuLjDQ8nRoqMhozOscFZW1OeMHKj1k9rPYOeJrL6KRgkKn9+qk4znVFAug1q.diwQYuDel.uvx9tU3KwJKkEezkWYpRL6ks7yCkZw65ku33+lPQhdzamHryn2CnDErF8fAh6VRLwu8m7Ol+m052e6dn9UW+C9x+r1OuP+8gQdHsSRrmfw5vQudqIMXsP6rTKF6ui9Cc+rO+TSKzFMW6xNNMag4cBej9F8H9NLWyexWCcO7iH7ubnAeIlYiq431RYcBbDNqe0pGxWh4+3w8Kwb6i8Wh4szofHriK11qsiGQUjx8MmlvSs8aVkP6X2a4O6S+zu4y8AoI.p.S8JBpm.YmtGPMQfkw1BK5seNLVXd0BaXJ7Jm+0aulMKMXEBnMFa4oCJKNHbJ7s.K2wxiv+FPFRWke05+IAvgj+G8Iewe612A6Z.9E8XuN23G6WmS7Ebh+nkBqe.uU1jmUe4tOWe4yW7Gp8z40FSDJiULYGdtl8iHVv1TtL9Vv9xZ3NVzPnw2msgisS3qTEEArMg5ZVuNIVf0.UnknTrdSg.3BaSrHXOg8de6B2EJSG6tA+TyQxVndh+d4OP+0WG4KtJrjCJ+uwCrO9EsGX+bdGJj+7him9qgfb5ZJb2sxKe+84wCvedviVXcWm8BtkBKgwzbHfday++vTBzFrwJC3q3cK3nm8z0iSpCfn1nhX1QEwbiJh4GUDmaTQb9QEwENZDYUFDb8M19D35ZkWy+J5x9UJw2xH8eAkXR1PA
      

      building user interfaces in HISE :)
      web: www.vst-design.com

      d.healeyD M 2 Replies Last reply Reply Quote 1
      • d.healeyD
        d.healey @Straticah
        last edited by

        @Straticah Looks like @Lindon is the guy to ask - https://channelrobot.com/product/loopboss/

        Libre Wave - Freedom respecting instruments and effects
        My Patreon - HISE tutorials
        YouTube Channel - Public HISE tutorials

        StraticahS 1 Reply Last reply Reply Quote 1
        • StraticahS
          Straticah @d.healey
          last edited by Straticah

          @d-healey i found exactly this in another thread from @Lindon i am not sure how i would go about connecting this to the scriptnode templates gain and freq. values we have in HISE.

          https://forum.hise.audio//post/55476

          HiseSnippet 4870.3oc6a01aiakcVNIdQsZ2hcA5m5mX8GBj2gjCuuRx3jNulI6flIYPljzDLvXJsDsM6HK5Uhd731M.En+g6+f1mmC06VismAX2EKPEjHEu2y8dd64bN2KE0yGW2ubxj5wc1Zmu+xyJ6r0e21u3xQMm7nSJpF04oOtyV+8a+rhIMkiCZa5gWdVwjIkC5r0Ve7WwF1ZmOoi75+4dOrXXwn9kKZpSmertpe4WWcZUyhVe98+WpFN7IECJ+9pSWhZ68eZ+5QOpdX84Pd93sS5bVQ+WWbb42TPx9ns6r0u5KGT0TO9EMEMkS5r0m7v5AW9hSpuXTK8+X0jpCGVxKTcdAln1leR8vAThYqcdzIUCG77Y58jNXVd9BqvG2ZE9G19YUCpl29BqwuQ5HXwHV1dr0Gsp38wqHdp2k3sAQZqkDoOoUj9sa+h9iqNqYQOTd9a29oify4nBX1WVTZosyG8ah29Q0fhQMwmV75xmLFWLeD8xRRBC7II6se2tcgseRSvaJFG7M+vyd0Cev273WD7EA186d2eWv2eRYvyNeXS0CKFM34EiJGFTMIvqSBNq5skCmDbQ0fxvfKJCJFNr9hfFP+4S.nooN3z52TJMzMHH3nwk+gfc2cxPP+3I6tavgkMWTVNJ3sfWpj.L8Au8KB73qQASpCvXGGTDLtXzwkA0GQgcJK4rEQNB9.JFVW+5fyOKno.VXx19mHigLVF.3vY0SpZppGETMBDPQIF56vyKm.xJZDAbG4aEi47VM5XYlONXP0jlwUGdNGcuypu.BEEl8hiigPBd.54Xn3McFqFg1gQZEA6y596t6RF5m.Q3qQ++vYP6eoNITqj2Z4sQdak2N4sWdmJuyB047sIQdqBMZ4sQdaCMN4sOzjFZxj24g1jPqRdqCslPqMz5j29PaZnMKzlG5RBcpPmNzYBc1PmKrqyG5RCcYgt7PeRnWE50gdSn2F5cg9zPeVnOOLMILUElZBSsgotvTeXZVXZdXVRXlNLyDl4By7gYYgY4g4pvbcXtML2ElmFlmEp.ZTknwGC93vmT7IOToP6JztxhOd7AzBikBFotJXcTvpnfAQACgB1.ETeEzbETZETYEzVEzREzQEzPETNETMEzKETIETHEzEkGWC8PAsPAcPAMPA4WAoWAYWkgwmi4KGBXN5KGd.HvZHr5D3PTz8AukJMrqltS5.oyBBl1P+I9NDHskNV7cXn0N5dwfgPn8zIiIE1PMXtFVNcF5OidavHvTSBc3vyBKiQAWMXlQSeO5iv.50AOLv4ZfxZbDK.uO7WF3m5ZvjaRIh.myHr.mg42l.z.lTKz.KDdKPbVLgVHzVhWH7.SlEH.qm.FzFlGKDPKrJVHbN35bXNbJGPP.BAuhCBjCi2QrEQRPPb.p3RIjB.LfDbf+c8Id.s.pRS7EPTvE5sDhAvFgcDkAqhGCxCqQJrDofYovBjBsOELJEV1TPeJrloDOB2WJPaofAY.OkAZy.sYXty.pOCBTFTlrThKwGnD4PNxAc4vykCHT2bH44P.xAtHGXgb5+Sf4RknHLUSbJwZINhf8DBS3SBlP.fQGSgvXXJHj.Hy17rsT1FoifIklvbs.mM7RDBBvsftIdOm35DBzEnuAdFLeJB1EzNg+4DmqDPO+l.+IN2RPskHX5jTNEiCnv33D37riLFCvnPOTekmgQd1Ks7JOkxTN1TMiOnBmxYNEw5HLAcjg.ftpLFFlw3rLNtr1nFFtPIJmAh4LZKmHaZFQLDCfr7.TDMsaZF8qYTsFBLCoXrUNimXDlF9OsFwtZclhwWL3hIGIjGgYL8IrDZKTSMQuc0DypIPUSzILsnGmWB9jnOLCd1lms4IcoJlsECFwhfjzbFIx7yYv+oyfZqyY3eNCuyYLbdFCPg.ZRvvLIPnMLslQwL0JFFpXHmVBZQFftFMCEoS0X.2gKkgtIXbVlM25knXLqLTx3.lw3X.qmg6dX.LLTvP7uIk8RozjQhyXDeVtDgyPbOy+KA4rLPBB+r.NhCNVU.dIqVyPefe6ZYZFqA9XD9iXcPDNvneaNKZfIz5.10R6l0KoEf81lZXhAN0YvxayPXHL4fjbVhIOikWfd4RfwyALONvzAL6oincGLgHiAhhcFRrURd.Wri5eWmiiyi.I.XYJDTJvk5YhD3qbYH+IRmvbJrzDcDHoBpPoT7.KTowH7ZLVOig7FLedKS1Pl3Y.g2AF6kDOdDS5Sgx4yPDkmIJf0FCKmoURfth7OlvtoHbBof.MvOfRdvohCvhlZgONEZKNvN7.Fj5yYtInroYPrRyjhjnlLVMFpOl.2TFBswAlyRCEIyfgkAGHSYgBoNdoCEMg.gQjRhy.PDQZ3PNPd4IHQR27DlrhU5fPiprZVmk.rbKLv4NliiYey4zjmBTQNMivKg1x8REYFslvJsHMWa84T1twwbdrz.R5oji47nW5k.Qj8ikcSxYAZLQo7XNyOfjdLGHidA9yxtsLkALhdIsHSIx.PPHmNEs6.qfUhnjrDHMISbomlnjrGUU4hBbHvgSrrl.l2ARKago2QHHSAZRXpNCgcHMJETCKOhroRZRiirwPDsxjJGyji4RRzDp2VI0MBTvTXkTu11rqNxFqmrDUFIkYTTbIbUMNoHfS2l3kKWAnadzIKIgU3TnlHoLiK1vkyhhHULqI34xHXFYCWohrlEFJfLyLuqmIdgIiVwToHDpIxi5bYkLbFRkj8o.cyL1bEMoRR4LFOhL2r8LtXCj5VIq2gkNfom4wSYwoL.fjL4zIlir4bgPSSoyNbxxhRolg7fRt8jjC1u6hU4FOtDaJ3Mk8ltmCryhIXugCKFO7xoqh9jhIb06Gx0zeL100h0OWWGGiUnuxVQNa1VQfGI3jpiOILnD6ffa8XRP+hQACFWb778Xb47sXbI2sgKYS6v.93E6vHZ9NL39HVcOF8HksK1eOJxXuWUGORH7xEa0XpVTbZ84iZBt3jp9mDTHMgYcxF1dQPuI+gywdIFzt8gFrE483tFt6cIST5fAObocPvsfuXGDQHNKFQoQ4YwHGYTtO1wStXfOhxMwo7jNlskDCGXTVtPQVVLh8hx7wHwVTlKFQkQY1XPdlNNkcoZaKQlpzr3LdJMFI95Fk5i07RaLf6QolXDhEkpisrQULxxE4yE94yhQdkHeZrkMhwgA3cwHlOxahy3U5XOOAFhYwmPo0kGq3ozX.D6F47BkNWLBWhb1Xf+hblXTVNxA0imTwZdJIFTXwv4orXjgMx54rDYcw47JHzPLsf4fcVcLJgGYUBCrI7T2HSdLhHiLYBMlzXTgHx3EMxfoIUNkvqrwIrOinzFsneFULRQGYRhQFwHML4nQMrDfDcZLxwEoamLbBIJ6FocwZdoUzEsIFIehzvSvApDqLNQShF1GLMJLoPJTYhCDmPc9HUpXCTdggJWblbjBnByLoGtJO3mRGipK7jlsph4E.gXjSrs7XOgKhtlIrLUL9oBdvSbPjSzAmnr13TZbiUzZHi0DmPcgxBTvXjoNBtXzchLoIz6In2D1pznhFL3JvJq3jB8GKaBNTLgXcEzfaIEVBFgECe31ToX6ol6i4dTol0EVBT4kCKkt6LZdyhQwSZ8yIrHOF60Qrh4b5fZKKvOl0XDYCGYtvDJNvBIEzhkhahTp3PgATR4sHrbdJOjsPR4cWl.q8VnfL.CXP8jxFIswQUC4MZi2XhIRZJ13g7KLgQLdsTj+Z2NluHX18443xlGUe5Y0ivE81cUx1sMqa24IQkYucFXl2hfAEMEA0G9uW1uInZzjpAkAUM7FsHYttnZ3PladRwafnijXmQ0qYRWlgZEo5GkDi6KosJO8LQGQpSjfURq0xgtqQNzh+yt6rKaP8J8CQJyAEiub2fOKfaQeZO5WYVoGtmoocYdkc0t3pElMgzmr6N6DfNZwk6LaBWpGA.NqCyxCQ.ty5wtbOsQM6z8W3cQi5KLtvVLo0+d3ks2CJLfFwohJAndR+hgCOrn+qmdihHAvIPW73xiCNZnZ+oeQO6Kl1ub7rtNdVWGunKa6Wv78jmOsBDMpu7f4s+Uap8IkCg2nbvS95pQkn8H0ps+Uq0tXOauQsn0j29jmfEJZenYQu50506UOXQulU5Uqe7iS7K50tRuOLGqsE7cAi+9x21rBIORdsDyuQJLWgBi7ZIg3cRwNcWMlJFP6mSu62UiB3iJ6cz4i5K2nvi2qKfybFKnwFY1BI3mQn+qUCZNo2dgAyZ32WhUuzzaO3Q1AdeP+RKapZzfx29sG0asvk30BT1SFq91O1kBkZGq41O1kh03XOVjYUxcjEPEszBStdomz0Nd8Gx30KFu4CY7lEi29gLd67wSXPKdoW6I3VGW1ZahQl8geGBk5UvDvajXXHe8hAf0sdwWKfogpP9I.uKdo4fHbVeEZzg7y0SiIjetBMHgEIRxA0tfaP9DlHZEwjQ.NrsQiLnU6aozAqwUQ1Aq.5P9nW2TsTthqp32gCWKCWKe13vMuigqkgajgajOab312wvMX3EuTefLdq7YY60noo4ARH3v52trE6I0rv6CFWULL3g0CGrKL5XsC6s+NzvgwKl40FzlMkUGQ6Pv+b.V7P2clAjXXW4.hmvlVFV16kjn6pwZA2iV4Hdubw1AOf7cydK8ZrPGMmM6bc7YFo60xs6bj3W02BNZViilHlo5FUrYTtfgDIXtELztBComDQ0LC2MySwsCRWvTherqyTwW1fxDc2fObQ4iM5GIDhjzaQdlW1l3gIRQRnjCBWxsdGm3XcP.h3cQH4fMFHsAltjm8FYrdNi2feVDA8phvl7yaPFV2WecxfYYYXcWuHClaTFrWQF1n6+5DC6BwXCnAQNrq6NlFcK+thRfMub8bnZiw5rWExtox.yQM5jfO8SCV0atWP.geWTycPHYvm8KNN4rh9kj+Wa9BIaQOVJ3t58tR7DX8prap.z5QtMIjz2LCVa9DVLyZKZ8d2.OLWKOBvqEwnWoZVl75VXmWErrX4QuDz.dM2ZBTwbQYMnwswbdc7QOkO5qkO679YV2LqLSYk4FTIrWmegIAu5hgeF2fyilt+lEqFt7MXCoxJh69WmKw8J6pJIrc0YZYkUqsz9C9+WT7NWY+lsqCTOcEY1CjzfUGEzBNh6Orp+qKG.3IPILxc9ShR21qev3RdCYE53SmgbCVkmoDtp06Ahv6ipG2qhaZa+fpOe9LbG09U24ND4y4dIlJ6G+w0WL5mPvQuUbxurBK+qMB5Jz94Wk16nZCsZ4.j2Gg1qGVFe13JtjvWLc6zKj3OaWTmohlJQjnXC4N3O9GCjuYkj7Wz9rkztYbp0bkmkCNtbBu+0n2A07VKWLRtKRSJkZOykhc1zl6Y6+R4vIkuCZp1mEWTrzhok3txgtseq0YTrImw7sPbu68NcEq3HvD0dukjaE0z4rZz8debR2VOzcTGbsNnmNhBPwZdkqHC+7TY3qtE.kedpX7UaDnLyG8tgJysmqHT6r9clANL3wR1rCalGaUdrtfJqn8WVMfj+7IyiFu1g+SP5VLleRlLhnWEY8OQ3Gg2qJ+RyBhHn0su1vPnfZI+F5+54N7O4RYuaPHgugEShBxWwabC0fVo.xKudVbv9qMksUIGWJ2OvdScmsNq8eW5t98T2OR1Bws2BXtUVfkpj9mcKf481BneOr.qU4FVCcxMZNVZwA+I0bzcip7Ouxr9yy.72.UetxsVbzZ4QPl5aNRfU2gJu5tlh5cCh3dLA4sT62+cJdpaFl9WRwSeyvl+RJdlaT7r+YR7ZOd26xeHo4z+3hlhojsZsllw7oUdM4cuVJuVtwxexRYZe3Bp3uv0LqBV7zokHzezwxBlXYxUiy9gylV5ayqfZS+3HbVjsEMaWOXQQeScS42NpW6Ne9ktAq20QGsw93Om235gCKGuwt4iN+3qaf8Fc9oGVNNr8dTNmvNa8Iq9Pp+qtcOj58a+0EWhv5QOcTUy2dV4zqu9mx9NS+4I4C29TIDj1HOZ6+5YOZ6zC1oZf7X1uhasinDK+GKnyO7TBWlMcXlA2NqbbSEUpsdb4ap5W19jyuy1OtbxqapOSnc5uLZms5dqY9aWv3e99WN+h+qWd+KXEi4M7u8ee+SjeFmEzO39xCD+rcCCQ6eb6GwELOIL32KO5IeZviQDzw.F14v5wCJG+cECpNexx5Za6un5+XEK.Ccd5nmK+.rPy9nNW8+L.zj5AmOrnY0+BCL3dZG.xrx+a.9eCXDVn5kK++5383+0Px09+Z31Jh+1sedUS+S1rL9QaPFAL3OEx3z+MH+5s+xiNBw5KDvOY6m7Sen+0OtA129qHd7yJZFWAf21ey4m9h5yG2uDbeDPiXx2FNaNT45DdMs.unbz.4h+W7ZZmJd8VS6TMqyNmVzeb8q52FFx+uI+MRKPlFI+Ua1Y6mwqCTyh61d6j3jNmVMn5U86S0OBw3adL5OfwX9.Fi8CXLtOfw3+.FS5GvXxt1wv+0QO37l5SaCGPCO+Kk7eas0WNhONZBJry+GVWpMR.
          
          

          eead53ac-59f7-449f-ae97-e6fe2fdb91e8-image.png

          building user interfaces in HISE :)
          web: www.vst-design.com

          LindonL 1 Reply Last reply Reply Quote 1
          • LindonL
            Lindon @Straticah
            last edited by Lindon

            @Straticah said in creating a multiband gui:

            its pretty simple - look at the setMouseCallBack in the snippet...and in there you'll find things like this:

            if(selectedFLine == 1)
            {
            	if(event.mouseDownX + event.dragX > 9 && (event.mouseDownX + event.dragX) < fl2 - 9)
            	{
            		MultiBandValues.Band1_2Boundary = FreqLookUp[event.mouseDownX + event.dragX];
            		MultiBandPanel.repaint();
            	}
            };			
            

            so this is checking for a freq value change for the first freq (selectedFLine)... and uses the FreqLookUp[] array to get a freq, value. Now you can use this freq value however you like....

            same for the gain values(there are 4 of these in the snippet):

            if(selectedGLine == 0)
            {
            	MultiBandValues.Band1Gain = GainLookUp[140-((event.mouseDownY + event.dragY)-10)];
            	MultiBandPanel.repaint();
            };
            

            so getting a value for the first gain value from the GainLookUp array....

            HISE Development for hire.
            www.channelrobot.com

            Christoph HartC 1 Reply Last reply Reply Quote 2
            • Christoph HartC
              Christoph Hart @Lindon
              last edited by

              But why don‘t you use the filterdisplay? That‘s precisely what it‘s made for.

              LindonL StraticahS 2 Replies Last reply Reply Quote 0
              • LindonL
                Lindon @Christoph Hart
                last edited by

                @Christoph-Hart said in creating a multiband gui:

                But why don‘t you use the filterdisplay? That‘s precisely what it‘s made for.

                example?

                HISE Development for hire.
                www.channelrobot.com

                1 Reply Last reply Reply Quote 1
                • StraticahS
                  Straticah @Christoph Hart
                  last edited by

                  @Christoph-Hart like from my initial post?

                  building user interfaces in HISE :)
                  web: www.vst-design.com

                  1 Reply Last reply Reply Quote 0
                  • M
                    Maarid Ekimmu @Straticah
                    last edited by

                    @Straticah said

                    Hi, I'm offended to remind you, in the hope that Christophe will look this way. The multiband filter is broken in Hise, I could not understand the reason, I will try to consult other programmers working with Juce.
                    When two segments approach each other, a parasitic burst of the signal appears. This is exactly why Christophe hung a divider on each band of the signal in his examples. Which, as it is not difficult to understand, is effective only in the static position of the segments. Trying to make them manageable, you inevitably get a parasitic spike at the output, the distance of information is unacceptable - depending on the frequency, the higher, the correspondingly greater the distance you need to block.

                    1.png

                    2.png

                    @Christoph-Hart My friend and I recently tried to disassemble the Monster plugin trying to determine the presence of an exponential formula by which the channel could be muted, neither I nor a familiar C++ programmer found it, unfortunately. I will try to contact jd13 directly, it is surprisingly quite responsive, perhaps it will tell you why LinkwitzRaily in C++ does not give a parasitic splash, but in the script it does. Which is very strange in itself.

                    StraticahS LindonL 2 Replies Last reply Reply Quote 0
                    • StraticahS
                      Straticah @Maarid Ekimmu
                      last edited by

                      @Maarid-Ekimmu I mean it is quite hard and fiddly to make an intuitive multiband UI imo, i have not started to try @Lindon s promising script yet. @Christoph-Hart A multiband container inside HISE or even scriptnode would definitely be a big plus if its easy to integrate into the UI. i was also wondering about the upper curve of the LR filter but then i found this and thought its just the mathematical definition and there is no other way.

                      7c9b6131-243c-44cc-8c24-e4686b276913-image.png

                      building user interfaces in HISE :)
                      web: www.vst-design.com

                      M 1 Reply Last reply Reply Quote 0
                      • M
                        Maarid Ekimmu @Straticah
                        last edited by Maarid Ekimmu

                        @Straticah

                        the link to the source of the Monster plugin is above, the name of the plugin is clickable, you can make sure it works and not find a formula for compensating the edge of each selected channel, although maybe we are blind and you will succeed?
                        We also read about Linkwitz Riley, watched the Juce forums, well, it works for an open source person, without problems, miracles

                        added
                        the only thing that comes to my mind is to contact the developer directly, explain this situation and ask for the formula, if it exists. It will be very funny if he answers the same way the programmer answered me - there is no formula, there is nothing to compensate :beaming_face_with_smiling_eyes:

                        1 Reply Last reply Reply Quote 0
                        • LindonL
                          Lindon @Maarid Ekimmu
                          last edited by

                          @Maarid-Ekimmu well that looks pretty much like the resonance of the two filters in your example.

                          HISE Development for hire.
                          www.channelrobot.com

                          M 1 Reply Last reply Reply Quote 1
                          • M
                            Maarid Ekimmu @Lindon
                            last edited by

                            @Lindon and?
                            I can't make any obvious sense out of your idiomatic sarcasm.

                            Maybe you can point a finger at a silly boy, where is the compensation for the volume surge, which is missing in this plugin? :baby_light_skin_tone:

                            #include "CrossoverProcessors.hpp"
                            
                            namespace {
                                void processBand(BandState& band, juce::AudioBuffer<float>& buffer) {
                                    if (band.isMuted) {
                                        buffer.clear();
                                    } else {
                                        float* leftSamples {buffer.getWritePointer(0)};
                                        float* rightSamples {buffer.getWritePointer(1)};
                            
                                        // Do the processing
                                        if (!band.isBypassed) {
                                            for (size_t index {0}; index < buffer.getNumSamples(); index++) {
                                                const double mid {(leftSamples[index] + rightSamples[index]) * 0.5};
                                                const double side {(rightSamples[index] - leftSamples[index]) * (band.width / 2)};
                            
                                                leftSamples[index] = mid - side;
                                                rightSamples[index] = mid + side;
                                            }
                                        }
                            
                                        // Update the envelope
                                        for (size_t index {0}; index < buffer.getNumSamples(); index++) {
                                            band.env.getNextOutput(leftSamples[index] - rightSamples[index]);
                                        }
                                    }
                                }
                            }
                            
                            namespace CrossoverProcessors {
                                void prepareToPlay(CrossoverState& state, double sampleRate, int samplesPerBlock) {
                                    // We don't filter sidechain channels but do copy them to each buffer - so filters may need less channels than the buffers do
                                    for (juce::dsp::LinkwitzRileyFilter<float>& filter : state.lowpassFilters) {
                                        filter.prepare({sampleRate, static_cast<juce::uint32>(samplesPerBlock), static_cast<juce::uint32>(2)});
                                    }
                            
                                    for (juce::dsp::LinkwitzRileyFilter<float>& filter : state.highpassFilters) {
                                        filter.prepare({sampleRate, static_cast<juce::uint32>(samplesPerBlock), static_cast<juce::uint32>(2)});
                                    }
                            
                                    for (juce::dsp::LinkwitzRileyFilter<float>& filter : state.allpassFilters) {
                                        filter.prepare({sampleRate, static_cast<juce::uint32>(samplesPerBlock), static_cast<juce::uint32>(2)});
                                    }
                            
                                    for (juce::AudioBuffer<float>& buffer : state.buffers) {
                                        buffer.setSize(2, samplesPerBlock);
                                    }
                            
                                    for (BandState& band : state.bands) {
                                        band.env.setSampleRate(sampleRate);
                                    }
                            
                                    state.sampleRate = sampleRate;
                                    state.samplesPerBlock = samplesPerBlock;
                                }
                            
                                void reset(CrossoverState& state) {
                                    for (juce::dsp::LinkwitzRileyFilter<float>& filter : state.lowpassFilters) {
                                        filter.reset();
                                    }
                            
                                    for (juce::dsp::LinkwitzRileyFilter<float>& filter : state.highpassFilters) {
                                        filter.reset();
                                    }
                            
                                    for (juce::dsp::LinkwitzRileyFilter<float>& filter : state.allpassFilters) {
                                        filter.reset();
                                    }
                            
                                    for (juce::AudioBuffer<float>& buffer : state.buffers) {
                                        buffer.clear();
                                    }
                            
                                    for (BandState& band : state.bands) {
                                        band.env.reset();
                                    }
                                }
                            
                                void processBlock(CrossoverState& state, juce::AudioBuffer<float>& buffer) {
                                    const size_t numCrossovers {state.bands.size() - 1};
                            
                                    // First split everything into bands and apply the processing
                                    for (int crossoverNumber {0}; crossoverNumber < numCrossovers; crossoverNumber++) {
                                        // We need to make a copy of the input buffer before processing
                                        // lowBuffer will be lowpassed, highBuffer will be highpassed
                                        juce::AudioBuffer<float>& lowBuffer = crossoverNumber == 0 ? buffer : state.buffers[crossoverNumber - 1];
                                        juce::AudioBuffer<float>& highBuffer = state.buffers[crossoverNumber];
                            
                                        highBuffer.makeCopyOf(lowBuffer);
                            
                                        {
                                            juce::dsp::AudioBlock<float> block(juce::dsp::AudioBlock<float>(lowBuffer).getSubsetChannelBlock(0, 2));
                                            juce::dsp::ProcessContextReplacing context(block);
                                            state.lowpassFilters[crossoverNumber].process(context);
                            
                                            // Crop the internal buffer in case the DAW has provided a buffer smaller than the specified block size in prepareToPlay
                                            juce::AudioBuffer<float> lowBufferCropped(lowBuffer.getArrayOfWritePointers(), lowBuffer.getNumChannels(), buffer.getNumSamples());
                                            processBand(state.bands[crossoverNumber], lowBufferCropped);
                                        }
                            
                                        {
                                            juce::dsp::AudioBlock<float> block(juce::dsp::AudioBlock<float>(highBuffer).getSubsetChannelBlock(0, 2));
                                            juce::dsp::ProcessContextReplacing context(block);
                                            state.highpassFilters[crossoverNumber].process(context);
                            
                                            // If this is the last band we need to apply the processing
                                            if (crossoverNumber + 1 == numCrossovers) {
                                                // Crop the internal buffer in case the DAW has provided a buffer smaller than the specified block size in prepareToPlay
                                                juce::AudioBuffer<float> highBufferCropped(highBuffer.getArrayOfWritePointers(), highBuffer.getNumChannels(), buffer.getNumSamples());
                                                processBand(state.bands[crossoverNumber + 1], highBufferCropped);
                                            }
                                        }
                                    }
                            
                                    // Finally add the bands back together
                                    if (state.numBandsSoloed > 0 && !state.bands[0].isSoloed) {
                                        buffer.clear();
                                    }
                            
                                    for (int crossoverNumber {0}; crossoverNumber < numCrossovers; crossoverNumber++) {
                                        // If there is another crossover after this one, we need to use an allpass to rotate the phase of the lower bands
                                        if (crossoverNumber + 1 < numCrossovers) {
                                            juce::dsp::AudioBlock<float> block(juce::dsp::AudioBlock<float>(buffer).getSubsetChannelBlock(0, 2));
                                            juce::dsp::ProcessContextReplacing context(block);
                                            state.allpassFilters[crossoverNumber].process(context);
                                        }
                            
                                        if (state.numBandsSoloed == 0 || state.bands[crossoverNumber + 1].isSoloed) {
                                            for (int channelNumber {0}; channelNumber < 2; channelNumber++) {
                                                buffer.addFrom(channelNumber, 0, state.buffers[crossoverNumber], channelNumber, 0, buffer.getNumSamples());
                                            }
                                        }
                                    }
                                }
                            }
                            
                            LindonL 1 Reply Last reply Reply Quote 0
                            • LindonL
                              Lindon @Maarid Ekimmu
                              last edited by

                              @Maarid-Ekimmu said in creating a multiband gui:

                              @Lindon and?
                              I can't make any obvious sense out of your idiomatic sarcasm.

                              Why would you assume its sarcasm? Have I been sarcastic at anyone expense here?

                              To be clear nearly all filters have some resonant component at the freq cut-off point, if we look at your image:

                              f1f4823c-e311-4c49-a8d3-5adfe01cb4cb-image.png

                              its clearly demonstrating that resonant "bump" in both the low pass and the high pass filters....which appears to be what is appearing in the second of your images:
                              708b5fcd-b805-43d3-97ac-fdd3bb280c87-image.png

                              Of course this may well be wrong as I have no idea what is being measured here. If so please feel free to ignore me, and pursue your solution elsewhere.

                              HISE Development for hire.
                              www.channelrobot.com

                              M 1 Reply Last reply Reply Quote 0
                              • M
                                Maarid Ekimmu @Lindon
                                last edited by

                                @Lindon said in creating a multiband gui:

                                If so please feel free to ignore me, and pursue your solution elsewhere.

                                Do I understand correctly that the lack of response initiates trolling? Otherwise, why should I ignore anyone when they are diligently trying to help me?
                                I sincerely assure you, we can kindly exchange subtleties and barbs for any length of time, moreover, I will be sincerely glad to do so.
                                You're not trying to turn the topic of conversation offtop by ignoring common sense, I hope?

                                DanHD 1 Reply Last reply Reply Quote 0
                                • DanHD
                                  DanH @Maarid Ekimmu
                                  last edited by

                                  @Maarid-Ekimmu he's trying to help you mate....

                                  DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                                  https://dhplugins.com/ | https://dcbreaks.com/
                                  London, UK

                                  M 1 Reply Last reply Reply Quote 2
                                  • M
                                    Maarid Ekimmu @DanH
                                    last edited by Maarid Ekimmu

                                    @DanH of course, ignore, just like you do. understand?

                                    It's a pity all this tripe does not solve the question of why there is no glitch on C++ Juce, but there is on Scriptnode, lasers, piu, piu, piu

                                    DanHD 1 Reply Last reply Reply Quote 0
                                    • DanHD
                                      DanH @Maarid Ekimmu
                                      last edited by DanH

                                      @Maarid-Ekimmu then I look forward to you solving the problem on your own 😂

                                      DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                                      https://dhplugins.com/ | https://dcbreaks.com/
                                      London, UK

                                      M 1 Reply Last reply Reply Quote 0
                                      • M
                                        Maarid Ekimmu @DanH
                                        last edited by

                                        @DanH then, I will make vst available in an independent application by bringing it to the daw constructor, as soon as I learn c++ 😜

                                        1 Reply Last reply Reply Quote 0
                                        • First post
                                          Last post

                                        54

                                        Online

                                        1.7k

                                        Users

                                        11.7k

                                        Topics

                                        101.8k

                                        Posts