Forum
    • Categories
    • Register
    • Login

    Saving MIDI CC assignments in user presets?

    Scheduled Pinned Locked Moved Scripting
    30 Posts 3 Posters 166 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.
    • ustkU
      ustk @David Healey
      last edited by

      @David-Healey @David-Healey So the working solution is

      const var currentAutomationState = {"ChildId": "Controller", "Children": []};
      
      const var mah = Engine.createMidiAutomationHandler();
      
      mah.setUpdateCallback(function()
      {
      	currentAutomationState.Children = this.getAutomationDataObject();
      });
      
      
      
      const var uph = Engine.createUserPresetHandler();
      
      uph.setEnableUserPresetPreprocessing(true, false);
      
      uph.setPreCallback(function(presetData)
      {
          presetData.MidiAutomation = currentAutomationState;
      });
      

      The automation state is saved in the instance but you can just save it in a file if you wish so.
      I'd prefer not in my case, because if you load multiple instances of the plugin, they'll all react to the same CC...

      Hise made me an F5 dude, any other app just suffers...

      David HealeyD dannytaurusD 3 Replies Last reply Reply Quote 1
      • David HealeyD
        David Healey @ustk
        last edited by

        @ustk said in Saving MIDI CC assignments in user presets?:

        const var currentAutomationState = {"ChildId": "Controller", "Children": []};

        Does this store MPE and Macro assignments too?

        Free HISE Bootcamp Full Course for beginners.
        YouTube Channel - HISE tutorials
        My Patreon - More HISE tutorials

        ustkU 2 Replies Last reply Reply Quote 0
        • ustkU
          ustk @David Healey
          last edited by ustk

          @David-Healey Apparently macro yes, but MPE 🤷♂
          Here's the automation data object:

          [
            {
              "Controller": 6,
              "Channel": -1,
              "Processor": "Interface",
              "MacroIndex": -1,
              "Start": 0.0,
              "End": 1.0,
              "FullStart": 0.0,
              "FullEnd": 1.0,
              "Skew": 3.106283926937945,
              "Interval": 0.0,
              "Converter": "37.nT6K8CBGgC..VEFa0U1Pu4lckIGckIG.ADPXiQWZ1UF.ADf...",
              "Attribute": "HiBoostBWKnb",
              "Inverted": false
            }
          ]
          

          Hise made me an F5 dude, any other app just suffers...

          1 Reply Last reply Reply Quote 0
          • ustkU
            ustk @David Healey
            last edited by ustk

            @David-Healey Just tested with my seaboard and yes, it works for MPE that have been MIDI learnt (Since it's just MIDI in the end...)

            Hise made me an F5 dude, any other app just suffers...

            1 Reply Last reply Reply Quote 1
            • dannytaurusD
              dannytaurus @ustk
              last edited by dannytaurus

              @ustk said in Saving MIDI CC assignments in user presets?:

              I'd prefer not in my case, because if you load multiple instances of the plugin, they'll all react to the same CC...

              That's a very interesting point!

              EDIT: actually, maybe it's fine. The DAW will only send MIDI CC to the active plugin, right?

              Meat Beats: https://meatbeats.com
              Klippr Video: https://klippr.video

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

                @dannytaurus If by inactive you mean hidden UI, then Midi is still reaching them

                Hise made me an F5 dude, any other app just suffers...

                dannytaurusD 1 Reply Last reply Reply Quote 0
                • dannytaurusD
                  dannytaurus @ustk
                  last edited by dannytaurus

                  @ustk A DAW will only route incoming live controller messages to the active or record-armed track(s), surely?

                  So if I have 3 different synths all set to respond to mod wheel > filter, then only the active one will respond when I turn the mod wheel, right?

                  Regardless of whether the synth UI is visible or hidden. It's based on active tracks, right?

                  The other 2 'unselected', 'inactive', 'not record-armed' synths won't respond to live controller data

                  Otherwise there would be chaos! Unless that's what you wanted, and armed ALL tracks for record! 😜

                  Meat Beats: https://meatbeats.com
                  Klippr Video: https://klippr.video

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

                    @dannytaurus Oh yes absolutely, active in the sense of "armed track", then 100% yes 👍

                    Hise made me an F5 dude, any other app just suffers...

                    dannytaurusD 1 Reply Last reply Reply Quote 1
                    • dannytaurusD
                      dannytaurus @ustk
                      last edited by

                      @ustk Yes, 'active' is too ambiguous a word to have used in the first place. My bad.

                      Meat Beats: https://meatbeats.com
                      Klippr Video: https://klippr.video

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

                        @dannytaurus The honour of badness is mine 😁

                        Hise made me an F5 dude, any other app just suffers...

                        1 Reply Last reply Reply Quote 0
                        • David HealeyD
                          David Healey @ustk
                          last edited by

                          @ustk said in Saving MIDI CC assignments in user presets?:

                          So the working solution is

                          I think there's more to it, at least if you're saving/loading it from a file.

                          setUpdateCallback is triggered before on init and setPreCallback is only triggered when loading a preset.

                          So we need it to be that when we make a change to automation we save the the object to a file.
                          Then at init we load that object from the file using setAutomationDataFromObject
                          And during preload we pass the object into preset data.

                          Free HISE Bootcamp Full Course for beginners.
                          YouTube Channel - HISE tutorials
                          My Patreon - More HISE tutorials

                          ustkU 1 Reply Last reply Reply Quote 0
                          • ustkU
                            ustk @David Healey
                            last edited by ustk

                            @David-Healey Absolutely, then the mah.setUpdateCallback allows you to easily write the file, that's why I said "or just rewrite what you already saved" in the post above

                            Hise made me an F5 dude, any other app just suffers...

                            David HealeyD 1 Reply Last reply Reply Quote 1
                            • David HealeyD
                              David Healey @ustk
                              last edited by

                              @ustk Yeah I've got it working now. I've set it to fall back to the preset's automation if the one loaded from the file is empty. That way I can setup my "defaults" in the preset file.

                              Free HISE Bootcamp Full Course for beginners.
                              YouTube Channel - HISE tutorials
                              My Patreon - More HISE tutorials

                              ustkU 2 Replies Last reply Reply Quote 1
                              • ustkU
                                ustk @David Healey
                                last edited by

                                @David-Healey said in Saving MIDI CC assignments in user presets?:

                                That way I can setup my "defaults" in the preset file.

                                Clever! 👍

                                Hise made me an F5 dude, any other app just suffers...

                                1 Reply Last reply Reply Quote 0
                                • ustkU
                                  ustk @David Healey
                                  last edited by

                                  @David-Healey Till today I wasn't aware of this setEnableUserPresetPreprocessing, this will save me from other situations where I was tinkering with the pre/post save/load in order to keep parameters persistent...
                                  I'll keep that in mind now!

                                  Hise made me an F5 dude, any other app just suffers...

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

                                  16

                                  Online

                                  2.4k

                                  Users

                                  13.8k

                                  Topics

                                  120.5k

                                  Posts