@Christoph-Hart Tested it, works perfectly here!
Best posts made by CyberGen
-
RE: Filter Display bug... is it fixed yet
-
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.
-
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. -
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); });
-
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();
-
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 OctaveThank you.
-
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.
-
RE: WP License Manager / JWT Authorization - HELP?
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);
-
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.
-
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.
-
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.
-
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). -
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.
-
RE: AudioFile.getNumSamples();
@iamlamprey Alright, this method definitely worked. Though I'm still wondering about getNumSamples(), I tried with audio files as objects and still gave me an error.
Anyhow, the audio.length method accomplishes my initial objective and I learned a few new tricks so, thank you soooo much.
cheers!
-
Computer Keyboard Octave
Hello,
How do I change the octave played by the computer keyboard?
-
RE: Wavetable Index at 100% Kills Sound
@CyberGen So yeah, Slices.
I've successfully converted 3 different waveforms that don't cut off. Below the settings that are working for me.
Thank you all.
-
RE: GoranGrooves partners with AVID: When opportunity comes crashing your door.
@gorangrooves I saw the avid post on instagram a couple times. Congrats!
-
RE: Phaser Effect Modulation possible inside a send container?
@Oli-Ullmann This is a good workaround for the problem. Thank you for sharing it. I had taken the same approach to temporarily solve the problem. However, I have since noticed that other FXs like the Degrade are also not doing anything when I attempt to connect them to an LFO or any other modulator.
@Christoph-Hart is this a bug?
-
RE: AHDSR - How does one turn off the little "stage indicators"?
@ulrik Thank you very much. This thing was a pebble in my shoe.
I can't say I completely understand the code though. I get the part of converting from and to string, but I don't understand the "manipulate" part.
Anyway, thank you again. I will definitely incorporate it.