• PitchShift Node has Noise

    General Questions
    4
    0 Votes
    4 Posts
    168 Views
    xxxX

    @trillbilly @Yarost

    yes i tried different things and it still crackles

    i ended up using the pitch shifter in faust

    it sounds a little different but it works fine without any crackles

  • 0 Votes
    12 Posts
    173 Views
    VirtualVirginV

    @Christoph-Hart said in Looking into the hise_documentation on GitHub- any reason why a majority of the markdown files are empty for the Scripting API?:

    Aw poor @VirtualVirgin that was half an hour that you'll never get back

    "Aw poor @VirtualVirgin that was half an hour that you'll never get back"

    No worries! Was learning how to generate markdown files from text.
    I made text files of all of the classes in the API, then ran a python script to transform it to markdown. Just a learning experience. I then went on the generate JSON for the API with the following schema:

    { "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "Scripting API Method", "type": "object", "properties": { "class": { "type": "string", "description": "The class this method belongs to." }, "method": { "type": "string", "description": "The method name." }, "description": { "type": "string", "description": "A description of what the method does." }, "syntax": { "type": "string", "description": "The usage syntax string for the method." }, "parameters": { "type": "array", "description": "List of method parameters.", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "The parameter name." }, "type": { "type": "string", "description": "The parameter type." }, "optional": { "type": "boolean", "description": "Whether the parameter is optional." }, "description": { "type": "string", "description": "A description of the parameter." } }, "required": ["name", "type", "optional", "description"], "additionalProperties": false } }, "returns": { "type": "string", "description": "The return type of the method." }, "examples": { "type": "array", "description": "Code examples demonstrating usage.", "items": { "type": "string" } } }, "required": [ "class", "method", "description", "syntax", "parameters", "returns" ], "additionalProperties": false }

    Which makes this for example:

    [ { "class": "Array", "method": "clear", "description": "Clears the array.", "syntax": "Array.clear()", "parameters": [], "returns": "", "examples": [ "const var arr = []; // Declare an array\n\n// preallocate 10 elements, do this if you\n// know how many elements you are about to insert\narr.reserve(10); \n\nfor(i = 0; i < 10; i++)\n{\n\t// Add an element to the end of the array\n\tarr.push(Math.randInt(0, 1000));\n}\n\nConsole.print(trace(arr)); // [ 523, 5, 76, 345, 765, 45, 977, 223, 44, 54]\n\narr.clear();\n\nConsole.print(trace(arr)); // []" ] }, { "class": "Array", "method": "clone", "description": "Creates a deep copy of the array.", "syntax": "Array.clone()", "parameters": [], "returns": "A deep copy of the array.", "examples": [ "const arr1 = [0, 1];\n\nvar arr2 = arr1;\n\n// Changing any element in arr2 will also change it in arr1\narr2[0] = 22;\nConsole.print(trace(arr1)); // [22, 1]\n\n// Reset the element 0 back to 0\narr1[0] = 0;\n\n// Cloning the array creates a new dataset in memory, separate from the original array\narr2 = arr1.clone();\nConsole.print(trace(arr1));\narr2[0] = 22;\nConsole.print(trace(arr2));" ] },

    I'm sure this is all elementary for you and David, but I'm just learning how to do some these data formats and transformations with parsers etc.

  • How to remove draggable filter grid lines?

    General Questions
    3
    0 Votes
    3 Posts
    58 Views
    xxxX

    @d-healey ah, yes thanks

    laf.registerFunction("drawFilterGridLines", function(g, obj) { });
  • Custom wavetables not included in build

    General Questions
    16
    0 Votes
    16 Posts
    506 Views
    xxxX

    gotcha thank you all

  • Preset Browser Tags....?

    Solved Scripting
    13
    0 Votes
    13 Posts
    1k Views
    R

    @Lindon How do you go about creating the buttons on the left for the tags? And if you click them do they filter the preset browser accordingly? ie clicking the Pad button will show you just the presets with a pad tag etc?

  • Wanted to share a release and HISE VSTs we created

    Blog Entries
    14
    12 Votes
    14 Posts
    407 Views
    StraticahS

    @Chazrox We used sample robot to do the multisample recordings. It essentially plays MIDI and records/ crops the receiving sounds. That way it is also possible to have some analog end of chain effects - or make monophonic synths polyphonic. :)

  • Preset tagging and buttons

    General Questions
    1
    0 Votes
    1 Posts
    33 Views
    No one has replied
  • How to control loaded samples with preset.

    Newbie League
    12
    0 Votes
    12 Posts
    134 Views
    It_UsedI

    @d-healey oh shit this work... How did I not come up with such a simple solution? 🤣
    Thanks again! 💕

  • WIN FL Studio: Notes cut when playing with PC-Keyboard

    Unsolved General Questions
    12
    1 Votes
    12 Posts
    777 Views
    StraticahS

    @HISEnberg we have MIDI scripts but you are able to bypass them (glide and pitch envelope)

    Good to know that there is no issue on your end.

    A single wavegen work fine.

    I will remove more and more from my project to see what causes this.

    Strange is that is only on one OS in one DAW.

  • 0 Votes
    2 Posts
    49 Views
    HISEnbergH

    @HISEnberg Okay I see my error now. I was loading the audio files from the Audio Files folder (using the File System API) and not the Pool which explains why it works in HISE but not in the compiled plugin.

    So for anyone else who comes here the answer looks something like this:

    const var audioFileList = Engine.loadAudioFilesIntoPool(); // get the audio files from the pool const var AudioReference = Synth.getAudioSampleProcessor("AudioReference"); const var cmb_MatchLoader = Content.getComponent("cmb_MatchLoader"); cmb_MatchLoader.set("items", ""); for (file in audioFileList) { var displayName = file.replace("{PROJECT_FOLDER}", "").replace(".wav", ""); cmb_MatchLoader.addItem(displayName); } inline function oncmb_MatchLoaderControl(component, value) { if (value > 0) { AudioReference.setFile(audioFileList[value - 1]); } } cmb_MatchLoader.setControlCallback(oncmb_MatchLoaderControl);
  • Displaying sync delay time properly

    General Questions
    6
    0 Votes
    6 Posts
    132 Views
    HISEnbergH

    @pcs800 Pretty similar issue. You are calling the repaint incorrectly here:

    inline function onKnob1Control(component, value) { currentTempoIndex = value; Panel1.repaint(); } Knob1.setControlCallback(onKnob1Control);

    So now you need to change Panel1 to displayPanel1 here and call the repaint on the control callback. This also means you will no longer need the timer on this panel since it will be your knob that is updating the panel, so you can remove this:

    displayPanel1.setTimerCallback(function() { this.repaint(); }); displayPanel1.startTimer(50);

    However there is one other thing important to understand. If you want to assign a knob callback with script, than you cannot use the property editor to assign the control anymore (the property editor is going to overwrite anything you are doing in the script).

    So if you want the knob to control the delay time still you are going to need to do that in the inline function:

    inline function onKnob1Control(component, value) { currentTempoIndex = value; displayPanel1.repaint(); // Fixed // Assign to the Delay knob } Knob1.setControlCallback(onKnob1Control);

    I think @d-healey ''s video here covers this but maybe there is another one I don't know about:

    https://www.youtube.com/watch?v=1rs0w4MDNA0

  • Externally Routed Sidechain Options

    Newbie League
    2
    0 Votes
    2 Posts
    42 Views
    d.healeyD

    @blush said in Externally Routed Sidechain Options:

    since I have to compile the plug-in each time

    Compile a debug build, it's much faster. Or you can try compiling HISE itself as a plugin.

  • 0 Votes
    79 Posts
    19k Views
    OrvillainO

    @Christoph-Hart

    Gotcha. Maybe I'm thinking about this all the wrong way, and the best approach for me is to use the classic method of handling all my RR logic inside a midi processor script.

    I haven't got to implementing any of this yet. I'm still just thinking about it. But as I see it, and from experience, a hihat needs the following:

    Ability to trigger multiple articulations, with round robin functionality. Ability to fade out or "choke" earlier voices when a new voice of a different articulation is triggered (Open to closed) Ability to crossfade from one articulation to another, based on incoming midi CC (usually CC4) Some way to trigger the 'tail' of a 'more open' articulation when going quickly from closed to open. Instantly choke all voices when a pedal articulation is triggered.

    I was hoping the complex group functionality would do a good chunk of this. But I suppose it is the wrong tool?

  • 0 Votes
    16 Posts
    400 Views
    trillbillyT

    @d-healey I'd never heard of them til I seen your post. It sounds promising.

    @bendurso Integrating with HISE is definitely a priority. What types of features would you be interested in?

    @Lindon I hear you brother. I think some of these things could be issues to smaller/startup developers. I'm not looking to create a marketplace in terms of just onboarding developers and selling their products for 2 main reasons. 1. Talk about a saturated market. 2. I just sold a business like this last year to further pursue other things.

    @tobbentm Moonbase looks great. Yes, I've 10+ years working for and with resellers so I've got a good idea of the ins and outs of that market + a collection of contacts. I have a few thoughts on keeping things in order across the board. I would definitely love to chat. I'll send you a DM and go from there.

  • Sanitry check failed

    Bug Reports
    4
    0 Votes
    4 Posts
    71 Views
    d.healeyD

    @lacroix Can you show me a screenshot of your plugin code?

  • Preset Browser - List item background

    General Questions
    24
    0 Votes
    24 Posts
    2k Views
    LindonL

    @DanH said in Preset Browser - List item background:

    @ustk ok back on this again 😆

    What would be a crafty way of adding multiple 'tags'?

    So the preset name could be something like BA_LD_PRESETNAME to indicate that it's a bass as well as a lead sound.

    Maybe some kind of divider is needed...

    Really I watch this sort of discussion a lot here, that can be characterised as "how to bend the preset browser to my will". My experience is that its nearly trivial ( a few days at most) to write your own custom preset browser...

  • Best Practice for Getting RMS/Peak on an audio buffer

    General Questions
    14
    1 Votes
    14 Posts
    944 Views
    Y

    @griffinboy can you give me an example with screenshot? my english its so bad and i think that the google translate its giving me wrong traduction

  • Odd Filmstrip behaviour? (video linked)

    General Questions
    3
    0 Votes
    3 Posts
    79 Views
    D

    @Chazrox

    Ahh, I see! Thanks duder!

  • Scriptnode Sliders - stack vertically?

    General Questions
    9
    0 Votes
    9 Posts
    158 Views
    ustkU

    @DanH @Christoph-Hart Wish he told us 120 parameters ago... 🤣

  • The big bug tier list

    Bug Reports
    69
    8 Votes
    69 Posts
    24k Views
    DanHD

    @Christoph-Hart is the Notch filter display (in Scriptode) a fiddly fix?