HISE Logo Forum
    • Categories
    • Register
    • Login

    Assigning a CC to a control disables messages from onController

    Scheduled Pinned Locked Moved Bug Reports
    20 Posts 5 Posters 874 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.
    • Casey KolbC
      Casey Kolb
      last edited by Casey Kolb

      If I have CC7 automatically controlling the volume of the plugin via the onController function, my script will look like this:

      function onController() {
          local number = Message.getControllerNumber();
          if (number == 7) {
             // update volume here
          }
      }
      

      But if I MIDI Learn another control with CC7 on the interface, the onController will no longer receive any messages for CC7, so the volume will stop updating.

      Is this a bug or am I missing something?

      Casey Kolb
      Founder & CEO of Lunacy Audio
      Composer | Producer | Software Developer

      ulrikU 1 Reply Last reply Reply Quote 0
      • ulrikU
        ulrik @Casey Kolb
        last edited by

        @Lunacy-Audio Yes if the component in the interface is connected via the "Property Editor" it will block the onController callback, it's working fine if you make your own connections without the Property Editor

        Hise Develop branch
        MacOs 15.3.1, Xcode 16.2
        http://musikboden.se

        ulrikU Casey KolbC 2 Replies Last reply Reply Quote 0
        • ulrikU
          ulrik @ulrik
          last edited by

          @Lunacy-Audio maybe it's a bug or maybe there's a good reason for this behaviour, I don't know

          Hise Develop branch
          MacOs 15.3.1, Xcode 16.2
          http://musikboden.se

          1 Reply Last reply Reply Quote 0
          • Casey KolbC
            Casey Kolb @ulrik
            last edited by Casey Kolb

            @ulrik That's just for the processorId. I'm referring to controller callbacks, not control callbacks.

            My issue is this: Imagine I want to allow the user to set all of the default knob CC assignments for the plugin globally, so CC assignments are not saved in each preset, which is a weird design choice to begin with because they'd have to resave every preset to match their CC setup. That's currently possible with the onController callback, but if the user assigns any of those global CCs to another knob via MIDI Learn, it will disable the global settings, because the onController callback is no longer triggered for that CC.

            Casey Kolb
            Founder & CEO of Lunacy Audio
            Composer | Producer | Software Developer

            ulrikU 1 Reply Last reply Reply Quote 0
            • ulrikU
              ulrik @Casey Kolb
              last edited by

              @Lunacy-Audio said in Assigning a CC to a control disables messages from onController:

              I'm referring to controller callbacks, not control callbacks

              I also mean the onController callback, I solve it by using my own "learn midi cc" panel, I'll show you what I mean, I'll make a snippet

              Hise Develop branch
              MacOs 15.3.1, Xcode 16.2
              http://musikboden.se

              ulrikU 1 Reply Last reply Reply Quote 0
              • ulrikU
                ulrik @ulrik
                last edited by

                @Lunacy-Audio check this, it's a bit cumbersome but it works.

                HiseSnippet 1866.3oc4Y8taaajDeosouH05fKs8SE3.1S2WnScjkz43FbA4hRjsSERriPkSZA50lihbk3hPwUfbkrUCBPeC5WxC1g9.be4dA5aP5Lb4+DEkrhtb8JPoEfDm+ryuYlcmc10c7EVrf.gOQqz4SGwHZend2odRmVNlbOR6iHZWW+Ty.IympH8voiLCBX1DMsMeDRPqzVjvme99Ozz0zyhkRhPdtfawdBeHWlRsSyGyccOwzlcNeXFoOnYaKgWKgqXLfmM0qQFYZ8RyAryLQw1Pmns8w1bovuqzTxBHZa8Pg8ztNhK7Tx+bd.umKCeoNoKLPJxmHbsQDi+lzxg6Z2I1uCHDM8NoQgMUQgOQ+TtMOgdZz3OFxflpQ13g1FKCd0WS3okAdaof2Mz6Z4yGIS4fX6Cza6AIp9lPJHKrTxR13+TRuk.jvSVcn4KYm3Cujngwg0psG810ps6c2o7NkgDQfjNwzmh9Kpluv0k4WmdOZ3DjpCXxSE1icMAG1nRXTIiXUvgYQCRiUaPZTIOVd7YODAPrW.Z2RLbjvCdwnBxLmYARMVl7wV.+i64x8Xz9i8rjbgGU3gBDgFCqX81CFX2wrc2o7q1obob9U0.VXD0KfKmZnDDLvqCMxxPApXz3zxz0sGLu2XF.Diy82mFFLeByz2qioGykRu0p9nTukCy5kTS2.A0RXynbOZEbYWrWPiQPk7YvLFcQA0YEKJ7NKwp1lRypgAGXXdEFbJRfVs.t0mmIDo5.qFkeoXrDRXFwILiAQ4DDsW.5Jc3AH59Jtszw.QBEdPtNY39EL9.GYB6TglDKTJbyLDVVyvtUqD8Kgw3dClKs.bFnRyX8MiX6aTo2.EoJ6hf.DpOTc7XWW9n.lw2.KJgONvmuMjcjAdrmnGZu4MR7.+bDwF6RuGDEuOsXSykrgIF+uckB0nXH5byZUqC.L8q6D8kBxHd65XZy8FPKNl7HefKL+4DXXAW9xShdB8c7yk2FpLgO6QaTKIVrF33b1kx4iaw33DANG9oWNc.yqxdzL4HguMyuK+6YIgfhBURXzykLs8Mu3At7AdLaz1QE4bw4yfE9FmO6fPO7Bzo1iVwk0WVIAsg4vEh1mBaOh0YpU81KxXsZU4yrr.6nhiWbqChriONquRzLpWW3xz.r173.VRAojUZrIPtJZ0Fuu50pCQYe1ncUqCdk5K7IL7DDOg7Oma9Y7BuDIsbL8FvrSVQ95P7kor7YBI6odF6V9UkKU90ko4Y0ueg7RKvgrUiMFiCSE35Y.99Jx79TibAibKnl2KSJJbJrgLzyhptXrIOa7vdngy3rEr0wCjReduwRlQdl4Go8.akevJr.pk0hkJImTaICUAoiEDhRL5UDCJN1MYQgtnvdFDhaKlB95UqQ2mVuwcfuuIcxbBt.GX+8UeWtjqvxzk5EhtUH+UJbRO0HVg6QaLuGAZFHbYUG4C6TYrL+Z26pPUtYqXmw9Kadbj8iaGIVPnEwY6A8CVsdPsT6lmQPgWaONTigE8dZWpHO0hvXt0HIq8xRJ0YyRMz0JPrTRy2DLIpaCnc3MiDG9kLrY3qG0LbWWNTilvALtsN1LHILzDc9B5+3G+o6SVUcaLitDxO7umW2chaBGm8Gpp5vAoKIhGDsMIOq8QvxCra9HOA7tQLeIGyQZGwl.GSR0aeI8iXAuTJFAGLIowJh10tJm8xzCRcdyooubVyKvFfRHz7e1zIrmmTQZ2bTbrtMLfejd9t4gCh4CmACNp.xWcNivdbwDSBD29phooPro3cFhYszeX1LvSL6EkAtdVJYiI+vyyZPBYVCR9t4L3YMwMyIZ+E8SaUGiEdLKIylNgaRixcSopkZj2cnMSrXzxfVAwhrPqQNnYMNPJFRsh1ydFnsyJOucQf66ZdkwsCZF2OKPa6CO7v2hTS6gDo92eKIG0FH427l2DRNsKJj5agGjZf4DVauN9LnxOrjYCvCEWD2aR.5Vsb4vunO0ycJIsgsTncylj4OJM36wG.M6o7wq1HhAT1cliSmN4OyUe7Nbz+ZEdz+5EU0aEg6Mz6vkVNEi2MJ.uPcn+Wi2nKRYG8i62GldlB1szO4qW2aMY8fx0TP4S0ejqnmoaZ.DJvAnhot8j+TDaZBeZh.0Wx0d8uV0q8ZzJesWZaNaDYyUaO7Bt6ns9+vUa89e98GOWpI385Jx2gKiaiNyciop3V5tkgPtf8PWFhC6N4YAryMCgT5Do1dSfcZPkRokuszrdc2gBgzY1IX7lGw5aN1U0v7xpBr1SzHqaXowUjHgFu9uOrPZ9afvxZW.eyeeV.Wc+dCN0DNSLzOhNjT6BUHsX.RfNdbACoqsAl2UuWCeGiLcYd1gufcNDwrN9tVDy5wL+UwFCMs7EuvRM4DKgbsPJfe6E9u0nj9o36zjiqnqWqZMxPXcxKrrvv8sf3Sw5zXMz4utF5bvZnysWCcNbMz4yWCctyR0AKQ8fwPazpkh.gNGGd5MMsi8vJQgy5I+B.FcO14
                

                Hise Develop branch
                MacOs 15.3.1, Xcode 16.2
                http://musikboden.se

                1 Reply Last reply Reply Quote 0
                • d.healeyD
                  d.healey
                  last edited by

                  Why not use MIDI learn for volume too?

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

                  1 Reply Last reply Reply Quote 0
                  • Christoph HartC
                    Christoph Hart
                    last edited by

                    CC assignments are not saved in each preset, which is a weird design choice to begin with because they'd have to resave every preset to match their CC setup.

                    Yes, but please imagine the alternative option where people have to remap all MIDI CCs when they load a DAW project :)

                    Also why would you want the CC7 to still update the volume when the user chose to control something else with it?

                    ulrikU Casey KolbC 2 Replies Last reply Reply Quote 0
                    • ulrikU
                      ulrik @Christoph Hart
                      last edited by

                      @Christoph-Hart said in Assigning a CC to a control disables messages from onController:

                      Also why would you want the CC7 to still update the volume when the user chose to control something else with it?

                      I have a setup where the user can chose to control several functions with whatever cc he chose
                      for instance, control modulation and filter with the modWheel.
                      I made it so the user can set the amount of influence for each parameter, I think it can be handy in some circumstances

                      Hise Develop branch
                      MacOs 15.3.1, Xcode 16.2
                      http://musikboden.se

                      d.healeyD 1 Reply Last reply Reply Quote 0
                      • d.healeyD
                        d.healey @ulrik
                        last edited by

                        @ulrik

                        I have a setup where the user can chose to control several functions with whatever cc he chose

                        You can do that through MIDI learn (assuming you have on screen controls for those parameters).

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

                        ulrikU 1 Reply Last reply Reply Quote 1
                        • ulrikU
                          ulrik @d.healey
                          last edited by

                          @d-healey 🤭 Oh, of course you're right, I'm blushing

                          Hise Develop branch
                          MacOs 15.3.1, Xcode 16.2
                          http://musikboden.se

                          1 Reply Last reply Reply Quote 0
                          • Casey KolbC
                            Casey Kolb @Christoph Hart
                            last edited by Casey Kolb

                            @Christoph-Hart said in Assigning a CC to a control disables messages from onController:

                            Yes, but please imagine the alternative option where people have to remap all MIDI CCs when they load a DAW project

                            I hear you, but wouldn't it make sense to store a handful of global CCs in an external file which act as the default for every instance of the plugin? And then you can also have MIDI CC saved per preset, but they wouldn't disable the global controls. A great number of my test users are getting annoyed with the CCs saved per preset because they have to remap literally every preset to match their setup 😱

                            I can make the external CC settings file work, but I just don't want the MIDI Learn to disable the onController callback for that CC.

                            Also why would you want the CC7 to still update the volume when the user chose to control something else with it?

                            Let me provide another example: I have CC1 automatically assigned to the dynamics knob of my plugin, but there are plenty of cases where a user would want to keep that setting globally, but also add more controls to CC1 in a preset for the convenience of a one-knob mod wheel tweak (I do this all the time, and so do lots of other producers). The instant a user MIDI Learns CC1 for any other control, it will disable the global CC1 control for the dynamics knob, even if they wanted to keep that assignment. They might not even realize the dynamics knob CC assignment was disabled, which is why from a design perspective it seems hairy.

                            Is there a way to keep the MIDI Learn per preset, but prevent it from disabling global CCs saved in an external file? That's really all I'm looking for. 😀

                            Casey Kolb
                            Founder & CEO of Lunacy Audio
                            Composer | Producer | Software Developer

                            ustkU 1 Reply Last reply Reply Quote 0
                            • ustkU
                              ustk @Casey Kolb
                              last edited by

                              @Lunacy-Audio so why don't you make your own system, global CC + custom midi learn. You lose the simplicity of using the native midi learn but you can make exactly what you want. This implies you use only panels for sliders to make the midi learn from a right-click (or any mouse/modifier), or a unique panel that lists all parameters where you set the global and the custom CC in one place.

                              Can't help pressing F5 in the forum...

                              Casey KolbC 2 Replies Last reply Reply Quote 0
                              • Casey KolbC
                                Casey Kolb @ustk
                                last edited by

                                @ustk Because reformatting 1000 knobs and sliders as panels would take weeks 😜

                                Tweaking this in the C++ would probably take 30 minutes, but I just can't figure out where it is.

                                Casey Kolb
                                Founder & CEO of Lunacy Audio
                                Composer | Producer | Software Developer

                                1 Reply Last reply Reply Quote 0
                                • Casey KolbC
                                  Casey Kolb @ustk
                                  last edited by

                                  @ustk As suspected, it was a single if statement preventing this 😀

                                  Works great if you just remove the if (!consumed) from line 726 https://github.com/christophhart/HISE/blob/master/hi_core/hi_core/MainControllerHelpers.cpp#L726

                                  Casey Kolb
                                  Founder & CEO of Lunacy Audio
                                  Composer | Producer | Software Developer

                                  d.healeyD ustkU 2 Replies Last reply Reply Quote 0
                                  • d.healeyD
                                    d.healey @Casey Kolb
                                    last edited by

                                    @Lunacy-Audio What does editing that line do?

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

                                    1 Reply Last reply Reply Quote 1
                                    • ustkU
                                      ustk @Casey Kolb
                                      last edited by

                                      @Lunacy-Audio Same question as Dave, seems strange...

                                      Can't help pressing F5 in the forum...

                                      Casey KolbC 1 Reply Last reply Reply Quote 0
                                      • Casey KolbC
                                        Casey Kolb @ustk
                                        last edited by

                                        @ustk @d-healey As mentioned previously in the thread, it makes it so that MIDI Learning a new control does not disable that CC from the onController callback, so you can set global CC controls and save them in a file, while keeping the MIDI Learn functionality without any conflicts between the two.

                                        Casey Kolb
                                        Founder & CEO of Lunacy Audio
                                        Composer | Producer | Software Developer

                                        d.healeyD 1 Reply Last reply Reply Quote 1
                                        • d.healeyD
                                          d.healey @Casey Kolb
                                          last edited by

                                          @Lunacy-Audio Oh that's interesting, will one have priority over the other or will both be active at the same time? Have you made a pull request?

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

                                          Casey KolbC 1 Reply Last reply Reply Quote 0
                                          • Casey KolbC
                                            Casey Kolb @d.healey
                                            last edited by

                                            @d-healey Both will be active at the same time. I've run a few tests in the exported plugin and it seems to work without any issues. It's great for assigning say CC1 by default to a knob on your interface, but also allowing the user to assign CC1 to other knobs without overwriting the default.

                                            I haven't made a pull request because it seems that some people don't want this behavior. Easy enough to tweak if you want it though!

                                            Casey Kolb
                                            Founder & CEO of Lunacy Audio
                                            Composer | Producer | Software Developer

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

                                            18

                                            Online

                                            1.7k

                                            Users

                                            11.8k

                                            Topics

                                            102.4k

                                            Posts