HISE Logo Forum
    • Categories
    • Register
    • Login

    Wavetable Synthesizer. [HQ] Toggle = "red button"?

    Scheduled Pinned Locked Moved Bug Reports
    4 Posts 2 Posters 986 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Л
      Лестер Глючный
      last edited by

      Win7 / 6.1.7601 / b647 / Standalone and as plug / x86
      Toggle [HQ] ON - HISE plays
      Toggle [HQ] OFF - HISE doesn't play, and it crashes (with host)
      Uncheck then check (make active [HQ] button) — HISE doesn't crash.

      1 Reply Last reply Reply Quote 0
      • Christoph HartC
        Christoph Hart
        last edited by

        Thanks, I'll fix that with the next commit.

        1 Reply Last reply Reply Quote 0
        • Л
          Лестер Глючный
          last edited by

          The second red button (I mean bug | crash):
          Try to Add new ModulatorMeter in Table Index, Global Modulators, Group Fade, Script Chains, etc...:
          — Scipt Voice Start Modulator (Sample Start, Pitch Modulation, Attack Time Modulation, etc..)
          — Script Time Variant Modulator
          — Script Envelope Modulator
          — Script FX [ for FX ]
          P.S. Is here any script templates for Audio FX (how to "filter" | "delay"...)?

          1 Reply Last reply Reply Quote 0
          • Christoph HartC
            Christoph Hart
            last edited by

            This is the most simple low pass filter implementation imaginable:

            
            reg lastValueL = 0.0;
            reg lastValueR = 0.0;
            reg thisCutoff = 0.0;
            reg invCutoff = 0.0;
            
            const var Cutoff = Content.addKnob("Cutoff", 0, 0);
            // [JSON Cutoff]
            Content.setPropertiesFromJSON("Cutoff", {
              "min": 0.01,
              "max": 0.99,
              "middlePosition": 0.1
            });
            // [/JSON Cutoff]
            
            function prepareToPlay(sampleRate, blockSize)
            {
            	
            }
            function processBlock(channels)
            {
            	thisCutoff = Cutoff.getValue();
            	invCutoff = 1.0 - thisCutoff;
            	
            	for(sample in channels[0])
            	{
            		sample = thisCutoff * sample + invCutoff * lastValueL;
            		lastValueL = sample;
            	}
            	
            	for(sample in channels[1])
            	{
            		sample = thisCutoff * sample + invCutoff * lastValueR;
            		lastValueR = sample;
            	}
            }
            function onControl(number, value)
            {
            	
            }
            

            However, iterating over every sample and process it is where a weakly typed language like Javascript comes to a performance bottleneck - this example needs about 2% while the CPU usage of native code of the same functionality should be totally neglectible. So for now it's OK to play around with it (and prototype new algorithms), but I wouldn't consider using it in an actual instrument.

            I am planning to offer a collection of basic DSP building blocks that can be assembled via scripting (just like REAKTOR or MAX). The basic API is already there, but creating all those little modules will take a while...

            1 Reply Last reply Reply Quote 1
            • First post
              Last post

            47

            Online

            1.7k

            Users

            11.7k

            Topics

            101.8k

            Posts