Categories

  • General questions and announcements about HISE

    8k Topics
    69k Posts
    HISEnbergH

    @elemen8t Basically forget about the Property Editor at this point, you need to do everything in scripting.

    You need a regerence to your FX (chorus in your case). So right click the Chorus and you get:

    const var Chorus1 = Synth.getEffect("Chorus1");

    That gives you access to the whole Effect API meaning you can call any of these on the Chorus now. You can use setBypassed or setEnabled here.

    HiseSnippet 1004.3ocuV0raaaDDdojYpkZSPSQOWv5SJEFFjVJx1HnvrRxpUn0NBQotAnGRWQNxZgI2kfbYREJBPtz2q7Nzi8ReDxaP6rboDISjcsEZCOHncm4aluc9a2wwBOHIQDSLZ9zEQ.w3SLmrfKm2eNkwIiFPLtm4ozDIDao2p2hHZRB3SLLp+spMLZrEI66sG2iFP4dPwVDx4BlG7CrPlrX2wteOKHXH0GdJKrj1cbG4I38EAhTjO0MsIQTuKoW.mQUpUyj7czj4Diux7nNGzc5AdGteGv4H6tGN0g1A51A7Ze3A9SOpCz9g1N11ThwcNwmIEwSjTIjPL1pmvewj4hWx0N3bVBaZ.nV3PlfdVu8PQfu5Hp1kzeNKve7x.UBAsx3hvVccX6yMOk4yVseQ36SyDXUfnb.znVU5UuB8bJSO6RzaMTxnDk1RSo6aNwKlEIKjn3yGaNhiYyYTLOUlJZcI09rZl8EnFb4dgzKggw3hUHZ001dWK7mG7nlMwbUhz5ETUkgHNMww5qsxpc16BPdxrYfmr0N4h1oJfwTNDrOp+RWgH5KBiDbbQqczhUXJfzKUJE7qFSt7LGw3ALNXMKk6IYB9Rr860BsmLVDrKZxfT3AM+slMzLbuDPtLbzRK7QMsvOMW1KASJ80fa8kqSNfb.3TLa4uytVqT4UHcxcuRmbSzmFDLEqsashYnpqnqfelPBOl2JieMeUSq2UzrYqUVt0Cf30JV0sEec.awSCmBwkiNJEwJppkolWcYZ4tHOchpjhB9HNS93HfeU8Vj7rKVRWKmUnpxrB56kWPqCZDFV21vTuvgjQ4xSdH2B36+tve6wjebz.pjpZsxoDRyHHVxTQ.iAvKvAa5FsFlCfjKkhHLPsphD++Mf0+5JW9Zp6hhEm6RJYo6nszcW1PqJ4xLz1lY++Jsyal59Rlub9pMb+E24.6h4ESie8OuNWcswpBm4lVkzQKyjix.j27iiwiwI33LD81mnaSH2liXYu9Wo29i36OdDGLK7SCnxpSqU2okK.6MpLhTMFjmvjKJWm7e1H7aJEuu4Xlza954Xs0vQUqz+CbL+hu6ZpG0WPvsLG9rO.2x8QZ+ucdUVlqKJ4J6+mftMOb31t8eb7OUpd4Mewu+mGOD.e033xJM.BnUSz0uwmBmqOH9DQpjwu3TpLlgU0lmkFNAexiGfwPNVqqlvZTSMASu1VsVQhI.2Oaweie4BcTqMxE5rT3GDeDR8hEOO+JUU5Y6rcvyMO6AaMvWNhqsVyv4P7MQO2yqpodOf6uo.auo.6ro.e3lBr6lB7fME3g+6.UOY8aRkhP8.FB4zwmjcangwxg2XeE4e.rmXZ8C

    David was faster than me...

  • Scripting related questions and answers

    2k Topics
    15k Posts
    iamlampreyI

    @d-healey jesus christ im so embarrased to have never tried that

  • To share HiseSnippets, Interface Elements, GUI, UI/UX, Panel LAF etc..

    186 Topics
    2k Posts
    J

    @d-healey i must of mistyped it cause i just retyped it and its better than before your a genius you have no idea how much i appericate you taking your time with me. Im sure you have a million other things you could be doing right now, I JUST WANT YOU TO KNOW THAT I TRULY AND GRATELY APPERICATE YOU THANK YOU VERY MUCH I SINCERLY MEAN THAT

  • All about ScriptNode DSP nodes, patches, SNEX and recipes.

    327 Topics
    2k Posts
    ILIAMI

    @ulrik Awesome, thank you so much

  • A subforum for discussing Faust development within HISE

    109 Topics
    885 Posts
    resonantR

    @Mighty23

    Thank you for the explanation. I don't mean a graphic, but a modulation like the one in the image below. Not separate Right and Left, but a single one (like the scriptnode gate, comp...etc.).

    alt text

  • If you need a certain feature, post it here.
    613 Topics
    5k Posts
    HISEnbergH

    @Christoph-Hart Essentially we are working towards a live audio-looper with overdubbing. Enso by Audio Damage is the inspiration behind it.

    The idea is that once the user is happy with their loop they can render it to an audio file and drag it into a DAW (just .wav file format to start). This is where I imagine inheriting for the AudioSampleProcessor (and AudioFile API) can come in handy, though I am not sure how to make that "jump" happen since it is expecting a pre-rendered/non-changing audio buffer.

    Personally I don't see the big fuss since a user can just record the output in their DAW but this is the requested feature. For that reason I don't think real-time compatibility is completely necessary--I just need a way to access the buffer and/or render it to disk (i.e. pause audio processing and export the buffer).

    The other consideration is this is part of a modular/dynamic FX system, so it will be possible to move the looper around. That means I need to set up a way of storing the buffer and copying it over to it's new location (but this is long term, I may just end up clearing it and initiating a new instance of the looper).

    Your Global cable idea is interesting but now I am wondering what the overhead will be since the buffer is continuously recording and overwriting, I'd also need to make sure the data transmitted over the cable is aware when the buffer is full and overwriting. I also see a lot of concerns with 60-seconds of stereo buffers at something like 96kHz being well over 10MB of data....

    I'll start simple with static constexpr int NumAudioFiles=1. If I follow this will give me access to the MultiChannelAudioBuffer, which stores the full audio data (not just the visual representation)? From there I could access it from HISEScript and use methods like toBase64String() for serialization and direct file export? I'm just glossing over the HISE source code so correct me where I am going wrong!

  • Develop better software through collaboration and shared knowledge. Not just about coding —> covering the entire journey, from development to launching and promoting plugins or software.

    104 Topics
    863 Posts
    C

    So, I took two SVF with 12dB/oct each and put them behind each other.
    I've set the resonance of both to 0.707 as I read this would be a neutral position
    and that's what it also looks like in HISE GUI.

    When I check the VST it gives me -22.x dB/oct, so that's ok.
    But at the cutoff frequency where I would expect 2x -3dB = -6dB, I have around +1dB!
    As if there was a resonance boost.

    So I made a version with resonance set to 0.3 - the lowest setting possible and I still
    get +0.4dB instead of -6.

    Any idea what's going on?
    Or is it wrong to expect -3dB at the cutoff frequency of a SVF?

  • If you encounter any bug, post it here.
    2k Topics
    12k Posts
    It_UsedI
    Envelopes in the scriptnode modulator - not recive Midi CC messages.

    How recive midi cc events in scriptnode envelope mod? I has been add a Flex AHDSR, but this is no recive midi cc messages. i tried a more methods for a day, but i didnt take a resault.
    Without scriptnode, build-in envelopes has recive midi cc messages...
    i use it in sampler gain modulator, use it with sustain pedal, if i use midi_cc node - this is working, progress slider on this node - changed while i press/release my sustain pedal, but if i press pedal - any envelope do not apply sustain on sound.
    https://github.com/christophhart/HISE/issues/782

  • Post your example snippets that you want to add to the official HISE snippet database here. We'll revise it, upload it to the repo and delete the post when finished.

    16 Topics
    103 Posts
    R

    @HISEnberg yes I saved each one before compiling but still got the issues.

    I only installed 4.1.0 the other day but have no issues building networks on my older version. I'll do a test nest time I'm at the laptop and see.

    And yes I'm on windows, ah ok you're getting them on windows too...at least I'm not going mad then. Wonder what the issue is though?

  • Everything related to the documentation (corrections, additions etc.) can be posted here
    67 Topics
    457 Posts
    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.

  • Collection of Blog Entries

    80 Topics
    745 Posts
    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. :)

  • The nerdy place for discussing the C++ framework
    168 Topics
    1k Posts
    griffinboyG

    @Orvillain

    Voices in Hise are managed 'automatically'.
    Take a read of Polydata.

    I don't remember where it can be found. But the Hise source has all the .h and .cpp files which have the implementations for voice handling. You can see what's currently going on, and perhaps there will be some useful api that you're not yet making use of.

    Christoph is the person to ask though!

39

Online

2.0k

Users

12.7k

Topics

110.1k

Posts