HISE Logo Forum
    • Categories
    • Register
    • Login
    1. HISE
    2. CyberGen
    • Profile
    • Following 0
    • Followers 0
    • Topics 103
    • Posts 458
    • Groups 0

    CyberGen

    @CyberGen

    I only know that I know nothing.

    74
    Reputation
    71
    Profile views
    458
    Posts
    0
    Followers
    0
    Following
    Joined
    Last Online

    CyberGen Unfollow Follow

    Best posts made by CyberGen

    • One-Click Fold All Component List and Module Tree sub-menus/groups/containers.

      Hello HISEaholics,

      I'd like to propose a simple time-saver.

      A one-click option to fold all Component List panel submenus and Module Tree groups/containers.

      Additionally, it would be great if they remained closed after recompilation. As of now, they reopen upon recompilation.

      It could be as simple as Shift + click on a submenu arrow to close/open all of them.

      Upvote if you need this as much as I do!

      Cheers!

      posted in Feature Requests
      CyberGenC
      CyberGen
    • RE: Next HISE Developer Hang

      Hi,

      There are many technical topics I’d like you guys to cover. However, as a musician who got into HISE primarily to develop tools for personal use—and someone still on the fence about releasing anything commercially—I’d like to propose dedicating some time to discussing the state of the audio tools business.

      I understand that the main goal of these meetings is to focus on HISE’s technical aspects, and the amazing folks in the forum have been great at answering any questions I’ve had so far. But I’d be very interested in hearing you discuss the business side of things.

      Looking at today’s audio tool ads, you’ll often see absurd discounts (70%-80%), even for top brands. This raises the question: is it profitable at all?

      Perhaps the more experienced among us could share insights about what it’s really like. Here are some of the questions I’d ask:

      • What kind of tools do you release?
      • Which ones have sold well, and which haven’t?
      • How many units has your top-selling product sold?
      • What pitfalls would you warn against?
      • I imagine most companies are one-person operations, but do you hire help occasionally?
      • What other tools (besides HISE) do you rely on in your workflow to release a product?
      • Which services and fees do you pay monthly or yearly to keep things running?
      • What kind of copy protection do you use, if any?
      • Do you release for mobile platforms?
      • What DAWs do you prioritize or release for?
      • What back-end servers do you use?
      • What is your pricing model: one-time purchase, subscription, or something else?
      • How do you advertise? Do you create your own ads or pay "content creators"?
      • Which platforms have yielded the best results, and which ones have been a waste of money?

      I'm looking forward to the meet.
      Cheers!

      posted in General Questions
      CyberGenC
      CyberGen
    • RE: Filter Display bug... is it fixed yet

      @Christoph-Hart Tested it, works perfectly here! 🙏🏻

      posted in General Questions
      CyberGenC
      CyberGen
    • RE: Wavetable Index at 100% Kills Sound

      @CyberGen New findings update: Even though changing the slices setting had initially yielded positive results, it was not solving the problem 100% of the time for me. After much trial and error I found a better fix by going into the sample editor window and moving the sample end just a few cycles short from the very end. This has been giving me consistent wavetable all the way to the end.

      Hope this helps. Cheers.

      posted in General Questions
      CyberGenC
      CyberGen
    • RE: WP License Manager / JWT Authorization - HELP?

      @CyberGen

      I leave this here cuz, nobody ELSE should spend a week of their lives figuring this out. 😰

      The code below works for me doing the following.

      User Authentication:
      Set up credentials for JWT token generation and sent a POST request to the /wp-json/jwt-auth/v1/token endpoint to authenticate and receive a JWT.

      Token Handling:
      The received JWT is used for subsequent requests to ensure each request is authenticated.

      Token Validation:
      The token is validated by sending it back to the server, ensuring it's valid and active before proceeding with any sensitive operations.

      License Activation:
      Post-token validation, we proceed to activate the license using the license key and other necessary details, which are then verified by the server.

      
      // Server Address
      Server.setBaseURL("https://yourserver.com");
      
      // Credentials for authentication
      const var credentials = 
      {
        "username": "you@yourserver.com",
        "password": "yourpassword"
      }
      
      // Relevant references
      const var authUrl = "/wp-json/jwt-auth/v1/token";
      const var validateUrl = "/wp-json/jwt-auth/v1/token/validate";
      const var activateUrl = "/wp-json/wclm/v3/activate";
      
      reg jwtToken = "";
      
      // Some debug stuff
      Console.clear();
      if (Server.isOnline()) Console.print("Server is Online!" + "\n");
      Console.print("Authorization URL: " + authUrl);
      Console.print("Validate URL: " + validateUrl);
      Console.print("Activate URL: " + activateUrl + "\n");
      
      // Authenticate and retrieve token
      inline function authenticateUser() 
      {
          Console.print("Starting authentication process...");
              
          Server.callWithPOST(authUrl, credentials, printResponse);
      };
      
      inline function printResponse(status, response) 
      {
          Console.print("Received response: " + JSON.stringify(response));
          
          if (response.token != "") 
          {
              jwtToken = response.token;
              
              validateToken();
          } 
          else 
          {
              Console.print("Authentication failed: " + response.message);
          }
      };
      
      // Validate the JWT token
      inline function validateToken() 
      {
      	Console.print("atempting to validate");
      
          if (jwtToken != "") 
          {
              Server.setHttpHeader("Authorization: Bearer " + jwtToken);
      
              Server.callWithPOST(validateUrl, {}, function(status, response) 
              {
                  Console.print("Validation response: " + JSON.stringify(response));
      
                  if (response.code == "jwt_auth_valid_token") 
                  {
                      Console.print("Token is valid!");
                      
                      activateLicense();
                  } 
                  else 
                  {
                      Console.print("Token validation failed: " + response.message);
                  }
              });
          } 
          else 
          {
              Console.print("No JWT token found.");
          }
      }
      
      // License activation details
      const var licenseData = 
      {
          "license_key": "your-prod-key-lic"
      };
      
      // Activate the license
      inline function activateLicense() 
      {
          Console.print("Starting license activation..." + licenseData.license_key);
      
          // Set the Authorization header with the JWT token
          Server.setHttpHeader("Authorization: Bearer " + jwtToken);
      
          // Send the POST request to activate the license
          Server.callWithPOST(activateUrl, licenseData, handleActivationResponse);
      
      };
      
      // Function to handle the response from license activation
      inline function handleActivationResponse(status, response)
      {
      	Console.print(response.signature);
      	
          if (response["response"]["result"] == "success") 
          {
              Console.print(response["response"]["message"] + "!");
          } 
          else 
          {
              Console.print(response["response"]["message"] + "!");
          }
      };
      
      // Example: Trigger authentication when a button is clicked
      inline function onButton1Control(component, value) 
      {
          if (value) authenticateUser();
      }
      Content.getComponent("Button1").setControlCallback(onButton1Control);
      
      
      posted in Scripting
      CyberGenC
      CyberGen
    • RE: Next HISE Developer Hang

      @d-healey This is really helpful info David. Much appreciated. Thanks.

      posted in General Questions
      CyberGenC
      CyberGen
    • RE: Next HISE Developer Hang

      @clevername27 Yes! Exactly. This is the kind of guidance I believe so many of us are hoping to hear during the group call. Posts like this are not often seen in the forum itself, even though these issues affect all of us who are releasing or considering releasing products. Thank you—more of this, please!

      posted in General Questions
      CyberGenC
      CyberGen
    • RE: Engine.saveUserPreset() no confirm dialog

      @aaronventure Oh, I see now.

      "CONFIRM_PRESET_OVERWRITE=0" no semicolon at the end.
      😁

      It works now.
      Thank You.

      posted in General Questions
      CyberGenC
      CyberGen
    • RE: Look and Feel question.

      @aaronventure trace is more for like properties, I mean something like (see below) but instead of this customized code, the original or default look and feel code. It would be so useful as a starting point reference.

      //	ALERT WINDOW
       	laf.registerFunction("drawAlertWindow", function(g, obj)
      		{
      			Console.print(trace(obj));
      
      			var a = obj.area;
      			var mA = [a[3]*0.01, a[3]*0.01, a[2]*0.99, a[3]*0.99];
      			g.setColour(Colours.darkgrey);	
      		 	g.drawRect(mA, 1);
      		});
      
      posted in General Questions
      CyberGenC
      CyberGen
    • RE: HISE performance slowing down when using SVG project?

      @d-healey Is pretty straight forward, below an example.

      David, thank you again.

      I will change all my paths to stings, its going to take me a minute. I'll let you how it goes.

      Cheers!

      //	GLARE 1
      	g.beginLayer(0);
      	g.gaussianBlur(a[3]*0.04);
      	g.setColour(Colours.withAlpha(Colours.white, 0.9));	
      	glarePath.loadFromData(glarePathData);
      	g.fillPath(glarePath, glareArea);
      	g.endLayer();	
      
      
      posted in General Questions
      CyberGenC
      CyberGen

    Latest posts made by CyberGen

    • RE: Sliders not responding to "Consumed" MIDI CCs

      @d-healey @d-healey said in Sliders not responding to "Consumed" MIDI CCs:

      setCustomAutomation

      Now that I've had a bit more time, there are a number of hurdles with using this method.

      Issues Encountered

      MIDI Learn disappears
      The "MIDI Learn" option no longer appears in the right-click context menu of knobs — unless an automationId has been manually assigned in the Properties panel.

      automationId overrides control callbacks
      Assigning an automationId disables the knob's regular controlCallback, which is where most of my knob logic lives (e.g., updating processors, linked components, states, etc.).

      Workaround via automation callback
      You can attach a callback to a specific automation and call the original controlCallback logic from there — but this adds boilerplate and breaks modularity.

      Avoiding feedback loops crashes HISE
      Trying to assign a knob as the target of its own automation (to bypass issue #2) results in an infinite loop that crashes HISE.

      Controller numbers don’t carry over
      If you switch the automationId to a new target, the MIDI CC assignment doesn't carry over. It must be learned again manually — making it difficult to share CC control across multiple processors or targets.

      🤕

      posted in Scripting
      CyberGenC
      CyberGen
    • RE: Sliders not responding to "Consumed" MIDI CCs

      @d-healey you genius!

      This re-establishes connection. I haven't fully tested it with all knobs but it looks like this solves the issue. It does create a bunch of additional steps, so I'm not sure that I won't run into more trouble, but I can live with that.

      I wish you would have posted it 20 minutes ago, before I posted the issue on github. 😬 I'll remove it.

      thanks man.

      posted in Scripting
      CyberGenC
      CyberGen
    • RE: Sliders not responding to "Consumed" MIDI CCs

      @CyberGen @ulrik @Chazrox @d-healey here is an updated snippet with a minimal example of the custom save/load function. The function is initially commented out so the knobs should move with your controller after you assign them. Then uncomment the function to test if controller still moves the knobs. Please let me know if they move for you. thx.

      HiseSnippet 1099.3ocsV0saZbDEdVi2l.8G0TkGfQ4p0UV1.FiskUTvFiaPwXi5lX0qZzvryZl3gYPyNqaHUQpWzWh7nz65qReC5aP6YlcMrj.0VnlUHf4bly47c9e6qUTVRhRi7p7xIiYHuuxObhzLr8PBWh5dBx6K7MrDC53IiIIIrHjmWoevxyq75H2ye+riIBhjxlQBgtTwory3i3lYT625Ebg3TRD6k7QEtciVcoJYakPkB3njeUzXB8ZxUryI1qslO54jjgHuu2e256PaDsWT856dPSJoI6fXRbbschZzn49GTamCHM1uIq5t.p6DwMJcng.nG4s9wpnIgCU+hLy.WxS3CDL6gZnPvxYjOUIhrtnkJp8PtHp+sAnDDnk9yBWkxBWO1uGOhOk9rv125XfmIQw.n2ZyCuRyAuZEgW0BvaAPxq.jVOCROxOjp4iMy3XwyW52UZX5XBjmJBkr6hVauR9sUvMjlsFQtlcpFNLUhf5UqtIF9ZiCqToBWJ3RFNNURMbkDqjGmZLJYMqBzJQ.UMZrRBpZS7MDQJaiJ+ZkxgLigKuJYKpfQz1fyYvux.PkuGz5sF+Jlo8shG7jbE+jM1JwR2o91DgX.TfD7w10Ats2F2NMwnFgCI2v19LEIBm4iUfhrDCfHMNc7P7SwcjWA9wVTMCxBuJgo6qYfYdNQFIXZKv.sEdzkcVfGmcUqIBbdmPQIB7TG+Dhg.V.rSt5uXvaXTyoPJGDoat3SczDmwJqYlTsbNs.AGKJN6hiNYonv5iApAuwAjXkFGvvbfskRYfTN3.EpmfK+TL6voz3QX3wRyxbKdzLVPlqHKWhzxE9rvbEOxkjtzdu.31fGU98Yn2FF.VPHNK0LKV2SEwDAEcjMmK3tINlHRXabXAm9bEDNkYgcP+3OlUb7B4kWj3xrKfscjj9+Rv.Y5nALcwRZ6Eg1t46k8WdubwQMzrXXgKpjckbyEiYxkM.BkG3g99R4nB9mw00+M4c8gBdDSi3Py8C7egTMnFxA3hCmQ2agqOmv+1G9ve7rkJbVynS3x94clKv1upqs4vN5J2a.ObLSa31fm2IrafEGYCxJ6eBK4ZiZrycyqyf.7c5vuclAOn0joGZ0uUhgMNj+taQTq+5c+t0gt25t9xz8e9y2otev8HbsDsCGLr2B5367aamdhc6VbyOQLIAJulNOMq5hmzSMBrJQOIuX5S2S.anTQoBhY90V1k64Lf5+41UX2GHS3lIEW9++1tr6KDejeetgNbwXbsEfQnV6yAFyeCfu1uSbLLaeF.W2+ze5yy5dzOpRsKQ6QLZNTq3ed5nP3slnLv5RISXm+3slsCO6bU6YaDHjIibG9G3ImYM6Yubl0tkIZDgpUull0kaeGiG5n.XR5derx98rmwKn4dDTE9ZJcdU8IBVeUEbmUUvFqpf6tpB1bUEbuUUv8uaAsCINJEV.m01fP852wML1yqiaJhqZE8u+I.ZsB
      
      posted in Scripting
      CyberGenC
      CyberGen
    • RE: Sliders not responding to "Consumed" MIDI CCs

      @CyberGen so, I added a midiAutomationHandler as well as mah.getAutomationDataObject() and mah.setAutomationDataObject() to my custom save and load functions respectively. It's still not working. Additionally I added mah.setUpdateCallback(midiDataObj) for good measure. Still not working.
      I noticed that in the midiDataObject all Channels show as -1. But not sure if this means undefined or all.

      @Christoph-Hart lil' help?

      posted in Scripting
      CyberGenC
      CyberGen
    • RE: Sliders not responding to "Consumed" MIDI CCs

      @d-healey if the MIDI channel is -1, does that mean all channels or undefined?

      posted in Scripting
      CyberGenC
      CyberGen
    • RE: Sliders not responding to "Consumed" MIDI CCs

      @d-healey it's weird because it's been great with everything else, it offers much more control over what you can restore with presets. I'm using a custom preset browser as well. So, everything works except for MIDI CCs. Which I'm not really messing with.

      posted in Scripting
      CyberGenC
      CyberGen
    • RE: Sliders not responding to "Consumed" MIDI CCs

      @d-healey So, I use it primarily to recall the state of attributes from multiple processors as well as some objects that contain data values. It's complicated but it works great for that purpose. However, it is clearly causing this issue for me. Just by commenting out the function and restarting HISE all knobs work properly with their assigned CCs.

      posted in Scripting
      CyberGenC
      CyberGen
    • RE: Sliders not responding to "Consumed" MIDI CCs

      @CyberGen @Chazrox @d-healey @ulrik So by process of elimination I narrowed down the source of the problem to my customLoadPreset namespace. I am using:

      uph.setUseCustomUserPresetModel(onPresetLoad, onPresetSave, true);
      

      Something about this seems to be severing the MIDI CC connection. It works as far as recalling all my components, processors, modulators' values and attributes. But it seems to be the cause of the MIDI CC problem. When I don't "include" it, things work as expected.

      Do you have any experience with this custom user preset model function?

      posted in Scripting
      CyberGenC
      CyberGen
    • RE: Sliders not responding to "Consumed" MIDI CCs

      @Chazrox good tip! thanks.

      posted in Scripting
      CyberGenC
      CyberGen
    • RE: Sliders not responding to "Consumed" MIDI CCs

      @d-healey I have also tried with different controllers. And the weirdest thing is that when I right click on the knob after "learning the CC" it gives me the option to remove the learned CC, which suggest that it's HISE is receiving MIDI just fine, but then doesn't move the knob.

      posted in Scripting
      CyberGenC
      CyberGen