Forum
    • Categories
    • Register
    • Login
    1. Home
    2. Orvillain
    • Profile
    • Following 1
    • Followers 0
    • Topics 88
    • Posts 672
    • Groups 0

    Orvillain

    @Orvillain

    163
    Reputation
    85
    Profile views
    672
    Posts
    0
    Followers
    1
    Following
    Joined
    Last Online

    Orvillain Unfollow Follow

    Best posts made by Orvillain

    • I wrote a reverb

      Don't know if this is the done thing really, but I wanted to show off:
      https://youtu.be/1kMHloRQLcM

      posted in C++ Development
      OrvillainO
      Orvillain
    • I wrote a bbd delay

      Again, wasn't sure where to put this. But I created my own node.

      https://youtu.be/-siB1UJfrD0

      Modelled analog bucket brigade delay. I'm starting to build up quite a nice collection of delay and reverb utilities now!

      posted in C++ Development
      OrvillainO
      Orvillain
    • RE: I wrote a reverb

      @Chazrox I might do a video or two on everything I've learned!

      posted in C++ Development
      OrvillainO
      Orvillain
    • RE: Need filmstrip animations

      @d-healey I really like that UI. Very simple, accessible, and smooth looking - for lack of a better word!

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: Transient detection within a loaded sampler - SNEX ????

      @HISEnberg
      Yes I wrote a custom transient detector in a c++ node, and made sure it utilised an audio file, which I can load in my UI using the audio waveform floating tile.

      I implemented spectral flux extraction:

      • Take your audio.
      • Perform an FFT on it.
      • Extract the spectral flux envelope from the FFT.
      • Downsample the spectral flux envelope (optional but can help accuracy)
      • Perform peak picking on the spectral flux envelope.

      I used the stock JUCE FFT processor.

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: Can We PLEASE Just Get This Feature DONE

      Free mankini with every commercial license???

      posted in Feature Requests
      OrvillainO
      Orvillain
    • RE: I wrote a reverb

      @Chazrox said in I wrote a reverb:

      @Orvillain Please. 🙏 I've been waiting for some dsp videos! I've been watching ADC's everyday on baby topics just to familiarize myself with the lingo and what nots. I think im ready to start diving in! There are some pretty wicked dsp guys in here for sure and I'd love to get some tutuorials for writing c++ nodes.

      There's two guys who got me started in this. One is a dude called Geraint Luff aka SignalSmith. This is probably his most accessible video:
      https://youtu.be/6ZK2Goiyotk

      Then the other guy of course is Sean Costello of ValhallaDSP fame:
      https://valhalladsp.com/2021/09/22/getting-started-with-reverb-design-part-2-the-foundations/
      https://valhalladsp.com/2021/09/23/getting-started-with-reverb-design-part-3-online-resources/

      In essence, here's the journey; assuming you know at least a little bit of C++

      1. Learn how to create a ring buffer (aka my Ring Delay thread)
      2. Learn how to create an all-pass filter using a ring buffer.
      3. Understand how fractional delays work, and the various types of interpolation.
      4. Learn how to manage feedback loops.

      Loads of resources out there for sure!

      posted in C++ Development
      OrvillainO
      Orvillain
    • RE: Orv's ScriptNode+SNEX Journey

      Lesson 5 - SNEX code in a bit more detail.

      So I'm by no means an expert in C or C++ - in fact I only just recently started learning it. But here's what I've sussed out in regards to the HISE template.... and template is exactly the right word, because the first line is:

      template <int NV> struct audio_loader
      

      Somewhere under the hood, HISE must be setup to send in an integer into any SNEX node, that integer corresponding to a voice. NV = new voice perhaps, or number of voices ????

      The line above declares a template that takes this NV integer in, and creates a struct called audio_loader for each instance of NV. Indeed we can prove this by running the following code:

      template <int NV> struct audio_loader
      {
      	SNEX_NODE(audio_loader);
      	
      	ExternalData data;
      	double note = 0.0;
      	
      	// Initialise the processing specs here
      	void prepare(PrepareSpecs ps)
      	{
      
      	}
      	
      	// Reset the processing pipeline here
      	void reset()
      	{
      		
      	}
      	
      	// Process the signal here
      	template <typename ProcessDataType> void process(ProcessDataType& data)
      	{
      
      	}
      	
      	// Process the signal as frame here
      	template <int C> void processFrame(span<float, C>& data)
      	{
      
      	}
      	
      	// Process the MIDI events here
      	void handleHiseEvent(HiseEvent& e)
      	{
      		double note = e.getNoteNumber();
      		Console.print(note);
      
      	}
      	
      	// Use this function to setup the external data
      	void setExternalData(const ExternalData& d, int index)
      	{
      		data = d;
      	}
      	
      	// Set the parameters here
      	template <int P> void setParameter(double v)
      	{
      		
      	}
      };
      
      

      There are only three things happening here:

      1. We set the ExternalData as in a previous post.
      2. We establish a variable with the datatype of double called 'note' and we initialise it as 0.0. But this value will never hold because....
      3. In the handleHiseEvent() method, we use e.getNoteNumber() and we assign this to the note variable. We then print the note variable out inside of the handleHiseEvent() method.

      Now when we run this script, any time we play a midi note, the console will show us the note number that we pressed. This is even true if you play chords, or in a scenario where no note off events occur.

      That's a long winded way of saying that a SNEX node is run for each active voice; at least when it is within a ScriptNode Synthesiser dsp network.

      The next line in the script after the template is established is:

      SNEX_NODE(audio_loader);
      

      This is pretty straight forward. The text you pass here has to match the name of the script loaded inside your SNEX node - not the name of the SNEX node itself.

      2aa2dbe0-4ea2-40b8-8a45-49d96ada26ec-image.png

      Here you can see my SNEX node is just called: snex_node.

      But the script loaded into it is called audio_loader, and so the reference to SNEX_NODE inside the script has to also reference audio_loader.

      posted in ScriptNode
      OrvillainO
      Orvillain
    • RE: scriptAudioWaveForm and updating contents

      @d-healey said in scriptAudioWaveForm and updating contents:

      @Orvillain Did you try, AudioWaveform.set("processorId", value); ?

      Yeah I did, and it does update it based on a follow up AudioWaveform.get('processorId') call - but the UI component doesn't seem to update, and still shows data from the previous processorId. When I compile the script, then the UI updates one time... but not on subsequent calls to the set method.

      I figured I needed to call some kind of update() function after setting the processorId, but no such luck so far.

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: Third party C++ log to console

      Don't forget to add this to HISE's preprocessor definitions too:
      JUCE_LOG_ASSERTIONS=1

      posted in General Questions
      OrvillainO
      Orvillain

    Latest posts made by Orvillain

    • RE: Invalid use of incomplete type vSIMDType

      @David-Healey Well I don't know what else to tell you: https://forum.juce.com/t/int64-t-vs-juce-int64/45358

      As reported here - it is a typedef issue, specifically affecting Linux compiles.

      Actually, I might have that wrong. That thread is about juce:int_64.

      posted in Bug Reports
      OrvillainO
      Orvillain
    • RE: Invalid use of incomplete type vSIMDType

      @David-Healey said in Invalid use of incomplete type vSIMDType:

      @Orvillain said in Invalid use of incomplete type vSIMDType:

      I think this is a Linux compiler thing.

      Linux user here

      Yeah I know. You're getting the issue with the dev branch but not your fork right? Your error:

      ../../../../../hise/hi_streaming/../JUCE/modules/juce_dsp/containers/juce_SIMDRegister.h:85:11:
      error: invalid use of incomplete type ‘using juce::dsp::SIMDRegister<long long int>::NativeOps = struct juce::dsp::SIMDNativeOps<long long int>’
      {aka ‘struct juce::dsp::SIMDNativeOps<long long int>’}
      

      That is telling you that SIMDRegister/SIMDNativeOps is being used incorrectly. The only thing I can think of is that it is being called with long long int, which is correct for Windows and Mac... but on Linux I think it should be called with long int - not long long int.

      I'd check that line in your fork and dev branch and make sure it is the same, if you haven't already.

      posted in Bug Reports
      OrvillainO
      Orvillain
    • RE: Invalid use of incomplete type vSIMDType

      @d-healey I think this is a Linux compiler thing. On Linux int64_t is defined as long int - whereas Windows and Mac it is defined as long long int.

      The compiler is throwing a wobbly because of that.

      I think.

      posted in Bug Reports
      OrvillainO
      Orvillain
    • Sampler "Sample Start" modulation doesn't support the MatrixModulator??

      bb1f01b7-d932-4870-b6fd-6b47fc0a4c4a-image.png

      @Christoph-Hart - is this a bug, or is it intended???

      Group Fade does support it. I'm just wondering why?

      posted in Bug Reports
      OrvillainO
      Orvillain
    • RE: CSS :nth-child() supported???

      @Christoph-Hart said in CSS :nth-child() supported???:

      I can add an attribute to my parameter dictionary for scale/unipolar/bipolar,

      I've added a method requested by @DanH where you can setup default properties for each new connection (so you can eg. set the base intensity to 75% or whatever floats your boat.

      https://docs.hise.dev/scripting/scripting-api/scriptmodulationmatrix/index.html#setmatrixmodulationproperties

      siiiiiiicccckkkkk!! Nice one Christoph!

      posted in Scripting
      OrvillainO
      Orvillain
    • RE: CSS :nth-child() supported???

      @Christoph-Hart said in CSS :nth-child() supported???:

      Ah sorry, no you can't. The inspector shows all available selectors and the ID isn't one of them.

      becc5f70-f620-4558-a4a6-95b8fab42a1d-image.png

      (The matrix columns can be addressed through the ID but I thought I've added it here to, but apparently that's not the case).

      But yeah if you're almost there, just go with your own dragger. Note that there's a snippet in the example database that also gets you 80% there:

      https://docs.hise.audio/tutorials/ui/index.html#drag-modulated-parameter

      Yep, been referencing that :)

      I've actually got quite a nice dragger right now. The UI is basically done. I just need to setup all the matrix connection stuff. Also I realised this probably gets me a cool benefit - I can add an attribute to my parameter dictionary for scale/unipolar/bipolar, and set the connection to that by default when the connection is created. I couldn't see a way to do that in the floating tile solution, but confess I didn't investigate very hard.

      Thanks for the confirmation that I'm not a complete idiot 😁

      posted in Scripting
      OrvillainO
      Orvillain
    • RE: CSS :nth-child() supported???

      @Christoph-Hart said in CSS :nth-child() supported???:

      @Orvillain you should be able to access them by the #id selector individually, no?

      If I can, then I'm stupid. Coz I couldn't figure it out! Is okay.... I'm three quarters of the way there with my own matrix controller now!

      posted in Scripting
      OrvillainO
      Orvillain
    • RE: CSS :nth-child() supported???

      @Felix-W Bah.... I'm just gonna write my own modulation controller then. TBH, I prefer that anyway, coz css still messes with my head.

      posted in Scripting
      OrvillainO
      Orvillain
    • CSS :nth-child() supported???

      Is :nth-child() supported in HISE's implementation of CSS?
      https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors/:nth-child

      I'm looking to do different things to each of the draggers in the modulation controller. But it doesn't seem to work?

      posted in Scripting
      OrvillainO
      Orvillain
    • RE: Updating matrixTargetId attribute on a knob - results in modulation not being visible

      @Oli-Ullmann Yes I think you're correct. I checked the docs and there is a line about it not meant to be a dynamic state.

      posted in Bug Reports
      OrvillainO
      Orvillain