Forum
    • Categories
    • Register
    • Login

    I HAVE MY VST DONE COMPILED ALL EXPANSIONS MADE HOW DO I ADD INSTALL EXP BUT ON MY INTERFACE

    Scheduled Pinned Locked Moved Scripting
    15 Posts 2 Posters 47 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.
    • David HealeyD
      David Healey @Jaytove
      last edited by

      @Jaytove

      • Create an expansion handler.
      • Add a button callback.
      • In the button callback ask the user to select the .hr1 file and a folder to install the samples.
      • Pass these to the installExpansionFromPackage function
      • Create some kind of progress indicator like a spinner or progress bar using a panel. You can track and animate the progress using the panel's loading callback: https://docs.hise.dev/scripting/scripting-api/scriptpanel/index.html#setloadingcallback

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

      1 Reply Last reply Reply Quote 0
      • J
        Jaytove
        last edited by

        how much would you charge me to give a final look at my vst before i call it a finished project i mean its basically done i just am struggling with the importing of expansions but other than that im open to suggestions to i think i have a nice vst that is marketable but i would love some one of your calibur to give me advice id be willing to give you a percentage of ownership of pay you in cash but would you be willing to even check it out?

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

          @Jaytove said in I HAVE MY VST DONE COMPILED ALL EXPANSIONS MADE HOW DO I ADD INSTALL EXP BUT ON MY INTERFACE:

          would you be willing to even check it out?

          What would you want me to do exactly?

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

          1 Reply Last reply Reply Quote 0
          • J
            Jaytove
            last edited by

            honestly if you could just add the install button so that a browser opens the user finds the hr1 and have hise install it other than that id be open for sugestions, i dont know if your familar with the note repeat on stienberigs groove box or something like that its thre drum machine sampler it has a note repeat funciton i tried to dubplicate into my script but i could not get it to work so the idea is if you hold down say note 36 which whould be a closed hh with the note repeat function on 36 would contiune to repeat to the bmp know when you hit notes say 60 thru 73 on the keyboad the rythum would change from in increment s of 1/1, 1/2 1/2 t 1/4 1/4 t etc i tried to script it but no luck but other than that i have like 30 expansions already done and these a not just a few sounds theres thousands of sounds i mean thousdands but i understand if you wouldnt be intreseted just thought id ask

            David HealeyD 1 Reply Last reply Reply Quote 0
            • J
              Jaytove
              last edited by

              i could always send you a demo if you give me your email so you can check it out i have mac and windows both compilied

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

                @Jaytove said in I HAVE MY VST DONE COMPILED ALL EXPANSIONS MADE HOW DO I ADD INSTALL EXP BUT ON MY INTERFACE:

                if you could just add the install button so that a browser opens the user finds the hr1 and have hise install it

                I think it's a better use of my time and your money if I show you how to do it. It would make a good topic for next month's Patreon video.

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

                1 Reply Last reply Reply Quote 0
                • J
                  Jaytove
                  last edited by

                  i would be so grateful you have no idea and the note repeat function is that caple to even do with hise the way i explained

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

                    @Jaytove Almost certainly possible but not something I've done. Can you achieve it using the built in arpeggiator script, there is also a synced arp too https://forum.hise.audio/topic/9497/browsable-snippet-clocksynced-arpeggiator

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

                    1 Reply Last reply Reply Quote 0
                    • J
                      Jaytove
                      last edited by

                      i have tried thr arps note repeat etc but i could not achieve what i was trying to accomplish

                      // === Note Repeat Functionality ===
                      const var NOTE_REPEAT_MIN = 36;  // C1
                      const var NOTE_REPEAT_MAX = 51;  // D#2
                      const var RATE_CONTROL_MIN = 60; // C3
                      const var RATE_CONTROL_MAX = 70; // A#3
                      
                      // Note repeat state
                      const var heldNotes = [];        // Track which repeat notes are held
                      
                      // Musical time divisions (in relation to quarter notes)
                      // Index 0-10 maps to notes 60-70
                      const var noteDivisions = [
                          4.0,    // 0: 1/1 (whole note)
                          2.0,    // 1: 1/2 (half note)
                          1.0,    // 2: 1/4 (quarter note)
                          0.6667, // 3: 1/4t (quarter triplet)
                          0.5,    // 4: 1/8 (eighth note)
                          0.3333, // 5: 1/8t (eighth triplet)
                          0.25,   // 6: 1/16 (sixteenth note)
                          0.1667, // 7: 1/16t (sixteenth triplet)
                          0.125,  // 8: 1/32 (thirty-second note)
                          0.0833, // 9: 1/32t (thirty-second triplet)
                          0.0625  // 10: 1/64 (sixty-fourth note)
                      ];
                      
                      const var divisionNames = [
                          "1/1", "1/2", "1/4", "1/4t", "1/8", "1/8t",
                          "1/16", "1/16t", "1/32", "1/32t", "1/64"
                      ];
                      
                      reg currentRateIndex = 2;        // Start at 1/4 (quarter note)
                      reg repeatTimerRunning = false;
                      reg repeatCounter = 0;
                      reg noteRepeatEnabled = false;   // Note repeat is OFF by default
                      
                      // Note repeat button callback
                      inline function onNoteRepeatButtonControl(component, value)
                      {
                          noteRepeatEnabled = value;
                      
                          if (!noteRepeatEnabled)
                          {
                              // Stop repeat and clear held notes when disabled
                              stopRepeatTimer();
                              heldNotes.clear();
                              Console.print("Note Repeat: OFF");
                          }
                          else
                          {
                              Console.print("Note Repeat: ON");
                          }
                      }
                      
                      // Set the callback for the note repeat button
                      btnNoteRepeat.setControlCallback(onNoteRepeatButtonControl);
                      
                      // Calculate tempo-synced interval in milliseconds
                      inline function getTempoSyncedInterval()
                      {
                          local bpm = Engine.getHostBpm();
                          if (bpm <= 0) bpm = 120; // Default to 120 BPM if not available
                      
                          // Calculate milliseconds per quarter note
                          local msPerQuarter = 60000.0 / bpm;
                      
                          // Multiply by the division to get the interval
                          local interval = msPerQuarter * noteDivisions[currentRateIndex];
                      
                          return interval;
                      }
                      
                      // Start the note repeat timer
                      inline function startRepeatTimer()
                      {
                          if (!repeatTimerRunning)
                          {
                              local interval = getTempoSyncedInterval();
                              Synth.startTimer(1.0 / interval);
                              repeatTimerRunning = true;
                              Console.print("Note repeat started at " + divisionNames[currentRateIndex] +
                                           " (" + Math.round(interval) + "ms @ " + Engine.getHostBpm() + " BPM)");
                          }
                      }
                      
                      // Stop the note repeat timer
                      inline function stopRepeatTimer()
                      {
                          if (repeatTimerRunning)
                          {
                              Synth.stopTimer();
                              repeatTimerRunning = false;
                              Console.print("Note repeat stopped");
                          }
                      }
                      
                      // Update the repeat rate
                      inline function updateRepeatRate(newRateIndex)
                      {
                          currentRateIndex = Math.range(newRateIndex, 0, noteDivisions.length - 1);
                      
                          if (repeatTimerRunning)
                          {
                              Synth.stopTimer();
                              local interval = getTempoSyncedInterval();
                              Synth.startTimer(1.0 / interval);
                          }
                      
                          local interval = getTempoSyncedInterval();
                          Console.print("Repeat rate changed to " + divisionNames[currentRateIndex] +
                                       " (" + Math.round(interval) + "ms @ " + Engine.getHostBpm() + " BPM)");
                      }
                      
                      // Define the color for the black keys. You can use RGB values or a predefined color.
                      const var BLACK_KEY_COLOR = Colours.black;
                      const var WHITE_KEY_COLOR = Colours.white;
                      
                      // Iterate through all possible MIDI notes.
                      for (var i = 0; i < 128; i++) {
                          // Check if the note is a black key.
                          if (i % 12 == 1 || i % 12 == 3 || i % 12 == 6 || i % 12 == 8 || i % 12 == 10) {
                              Engine.setKeyColour(i, BLACK_KEY_COLOR);
                          } else {
                              Engine.setKeyColour(i, WHITE_KEY_COLOR);
                          }
                      }
                      
                      David HealeyD 1 Reply Last reply Reply Quote 0
                      • David HealeyD
                        David Healey @Jaytove
                        last edited by David Healey

                        @Jaytove

                        What was the problem with the arp?

                        stopRepeatTimer() This function is not needed, just call Synth.stopTimer() You don't need the repeatTimerRunning variable.

                        You don't need to stop and start the timer to update the rate, you can just call startTimer with the new rate while it's still running.

                        I also think the transportHandler might be useful here.

                        All this stuff should be a separate MIDI processor, not in your UI script which should be deferred.

                        for (var i = 0; i < 128; i++) // Smells like AI?
                        

                        There was a coding puzzle on my Patreon page last year (or maybe the year before) to find the simplest way to determine if a note number was a black or white key, you might find that useful.

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

                        1 Reply Last reply Reply Quote 0
                        • J
                          Jaytove
                          last edited by

                          the midi note repeat was just just an idea i dont want to get lost i mostly care about having an install expansion button on my interface that will open a browser for the user to locate hr1 file and it installs from there you said some thing about showing me how to do to do this when would you avilabilty be ?

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

                            @Jaytove said in I HAVE MY VST DONE COMPILED ALL EXPANSIONS MADE HOW DO I ADD INSTALL EXP BUT ON MY INTERFACE:

                            you said some thing about showing me how to do to do this when would you avilabilty be ?

                            I'll post it for next month's video on Patreon.

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

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

                            20

                            Online

                            2.2k

                            Users

                            13.3k

                            Topics

                            115.4k

                            Posts