HISE Logo Forum
    • Categories
    • Register
    • Login
    1. HISE
    2. CyberGen
    3. Best
    • Profile
    • Following 0
    • Followers 0
    • Topics 101
    • Posts 437
    • Groups 0

    Posts

    Recent Best Controversial
    • 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! :folded_hands_light_skin_tone:

      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: 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.
      :beaming_face_with_smiling_eyes:

      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
    • QWERTY Keyboard Octave - setKeyPressBaseOctave - Feature Request

      Hello,

      I'm moving this from a general question into a feature request.

      Kindly requesting a way to change the base octave triggered by the QWERTY keyboard into HISE. This would be very useful for when you don't have a midi keyboard at hand and need to input notes directly from the computer-keyboard. "Z" and "X" are a very popular choice for + and - one octave. I've also seen apps that use the keyboard numbers for direct octave jump.

      Below the original topic.
      Re: Computer Keyboard Octave

      Thank you.

      posted in Feature Requests
      CyberGenC
      CyberGen
    • Latch mode for the Hardcoded Arpeggiator.

      I would like to propose the addition of a "Latch Mode" to the HISE Arpeggiator. This feature would provide users with a unique creative tool, distinct from the existing Hold Mode, to expand their musical possibilities.

      Description:
      Arpeggiator Latch Mode, although similar to the existing Hold Mode in some aspects, offers a distinct functionality that adds a layer of versatility to HISE's arpeggiator.

      One unique aspect of Arpeggiator Latch Mode is that it automatically resets the arpeggio note pattern when the user presses a new set of keys after having released all keys. This behavior ensures that the arpeggio starts fresh with each new chord/note input, allowing for seamless transitions between chords and arpeggio patterns.

      Some Benefits:
      Enhanced creative possibilities with a unique approach to arpeggio sustain.
      Clear differentiation between Hold Mode and Arpeggiator Latch Mode, catering to various musical needs.
      A versatile tool for live performance and studio production across genres.

      I kindly request the consideration of this feature addition, recognizing its potential to diversify the HISE experience for users across the musical spectrum.

      Thank you.

      posted in Feature Requests arpeggiator
      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. :anxious_face_with_sweat:

      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: Delete Parameter Knob in Scriptnode?

      @d-healey Right. Thank you. That makes sense. Sorry for that one mate, I must have tried everything else.

      posted in ScriptNode
      CyberGenC
      CyberGen
    • Delete Parameter Knob in Scriptnode?

      I'm afraid to ask, but (in scriptnode) how do I delete a parameter knob after I've created it?

      I honestly cannot find a delete button.

      posted in ScriptNode
      CyberGenC
      CyberGen
    • RE: Next HISE Developer Hang

      @clevername27 said in Next HISE Developer Hang:

      @CyberGen Few developers would disclose this information.

      True, though I believe it benefits us all. Tho more we share the better. If there is enough interest, maybe we could conduct it using an anonymous form—a developer-sourced audio tool market study? Just a thought.

      posted in General Questions
      CyberGenC
      CyberGen
    • RE: Gain AHDSR Monophonic not working?

      @ulrik In monophonic mode, the envelope responds to one note at a time, typically retriggering the attack phase, as opposed to polyphonic mode where each note gets its own independent envelope.

      posted in General Questions
      CyberGenC
      CyberGen
    • ULTRA-CLEAN OSCILLATORS

      Hello Friends,

      For a while now, I've been scripting a wavetable synth with HISE. Although I've been struggling along for a crazy-long time with it, I'm now getting close to something resembling a complete pro soft synth, with just about all the features I set out to include in it.

      One thing still doesn't feel right yet: the quality of the wavetable sound. I don't have an artifact problem, but at times the sound can feel a bit broken up and not as sharp as I was hoping it would be, especially with the filter peak cranked. To understand this issue a bit more, I went to the Xfer Records page to look at Serum's features. Right away, I was hit with "ULTRA-CLEAN OSCILLATORS," the heading in one of the paragraphs. (Copied Below)

      They claim Serum features advanced math that makes things sound better than basically any other wavetable synth on the market. It made me wonder how much of it is already built into the HISE wavetable synth and how much needed to be programmed in. Also, how much is just a marketing plan with no real advantage on HISE's wavetable synth.

      Since I'm not a math nor coding expert, I come to you cracks for guidance. Please read Serum's description of their OSCs. Let me know if HISE already delivers this level of performance and I just need to do better with my wavetables, or if there is anything I can do (coding) that would bring the quality and sharpness of the sound to the highest possible level.

      Thank you.
      ULTRA-CLEAN OSCILLATORS
      Playback of wavetables requires digital resampling to play different frequencies. Without considerable care and a whole lot of number crunching, this process will create audible artifacts. Artifacts mean that you are (perhaps unknowingly) crowding your mix with unwanted tones / frequencies. Many popular wavetable synthesizers are astonishingly bad at suppressing artifacts - even on a high-quality setting some create artifacts as high as -36 dB to -60 dB (level difference between fundamental on artifacts) which is well audible, and furthermore often dampening the highest wanted audible frequencies in the process, to try and suppress this unwanted sound. In Serum, the native-mode (default) playback of oscillators operates with an ultra high-precision resampling, yielding an astonishingly inaudible signal-to-noise (for instance, -150 dB on a sawtooth played at 1 Khz at 44100)! This requires a lot of calculations, so Serum’s oscillator playback has been aggressively optimized using SSE2 instructions to allow for this high-quality playback without taxing your CPU any more than the typical (decent quality) soft synth already does. Load up Serum and we think you’ll be able to notice both what you hear (solid high frequencies, extending flat all the way up to the limits of hearing) as well as what you don’t hear (no unwanted mud or aliasing gibberish- just good, clean sound).

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

      @d-healey I'm using the one marked as "sorry guys" Mar 18. Which was the one that solved the bug that started this topic.

      posted in General Questions
      CyberGenC
      CyberGen
    • Computer Keyboard Octave

      Hello,

      How do I change the octave played by the computer keyboard?

      posted in General Questions
      CyberGenC
      CyberGen