<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[FreezeMode Functionality]]></title><description><![CDATA[<p dir="auto">I love the Freeze Mode function of the Reverb Processor.</p>
<p dir="auto">How can I replicate this function (to freeze incoming audio) in ScriptNode? I tried using send and receive nodes, but I keep encountering feedback issues. What I want to achieve is to freeze the audio when pressing a button.</p>
]]></description><link>https://forum.hise.audio/topic/11707/freezemode-functionality</link><generator>RSS for Node</generator><lastBuildDate>Sat, 07 Mar 2026 22:06:49 GMT</lastBuildDate><atom:link href="https://forum.hise.audio/topic/11707.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 15 Jan 2025 19:35:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to FreezeMode Functionality on Thu, 16 Jan 2025 09:17:51 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://forum.hise.audio/uid/2928">@bendurso</a><br />
What do you think about this?</p>
<pre><code>import("stdfaust.lib");

declare name "Tap Delay + Freeze mode";
declare version "0.1a";

process = (_, _) : stereo_delay with {
    // Global UI group for timing controls
    timing_group(x) = hgroup("[0]Timing", x);
    bpm = timing_group(hslider("[0]BPM[style:knob]", 120, 40, 200, 1));
    subdivision = timing_group(hslider("[1]Note Division[style:knob]", 4, 1, 16, 1));
    
    // Global UI group for mix controls
    mix_group(x) = hgroup("[1]Mix", x);
    feedback = mix_group(hslider("[0]Feedback[style:knob]", 0.7, 0, 0.95, 0.01));
    wet_gain = mix_group(hslider("[1]Wet/Dry[style:knob]", 0.5, 0, 1, 0.01));
    
    // Freeze controls with smoothing
    freeze = mix_group(checkbox("[2]Freeze")) : si.smoo;
    freezeInputMix = mix_group(hslider("[3]Freeze Input Mix[style:knob]", 0.5, 0, 1, 0.01)) : si.smoo;
    
    // Calculate timing based on BPM
    beat_duration = 60.0 / bpm;
    maxtime = beat_duration * 4;
    delay_time = beat_duration / subdivision;

    stereo_delay(l, r) = (dry_l + wet_l, dry_r + wet_r)
    with {
        // Dry paths
        dry_l = l * (1 - wet_gain);
        dry_r = r * (1 - wet_gain);
        
        // Wet paths with delay network
        wet_l = l * wet_gain : left_delay;
        wet_r = r * wet_gain : right_delay;
        
        // Left and right delay networks
        left_delay = _ &lt;: tap_process ~ _;
        right_delay = _ &lt;: tap_process ~ _;
        
        // Tap process with freeze
        tap_process(fb) = de.delay(ma.SR * maxtime, delaylen, processInput) 
        with {
            delaylen = max(1, int(ma.SR * delay_time));
            
            // Process input based on freeze state
            processInput(x) = select2(freeze &gt; 0.5,
                x + (fb * feedback),           // Normal operation
                fb + (x * freezeInputMix)      // Freeze mode
            );
        };
    };
};
</code></pre>
]]></description><link>https://forum.hise.audio/post/95637</link><guid isPermaLink="true">https://forum.hise.audio/post/95637</guid><dc:creator><![CDATA[Mighty23]]></dc:creator><pubDate>Thu, 16 Jan 2025 09:17:51 GMT</pubDate></item><item><title><![CDATA[Reply to FreezeMode Functionality on Thu, 16 Jan 2025 00:34:53 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://forum.hise.audio/uid/3461">@Mighty23</a> said in <a href="/post/95624">FreezeMode Functionality</a>:</p>
<blockquote>
<p dir="auto">If that's the case, the idea would be to start with a tap delay set to 100% wet and feedback just slightly below 1.0. Each tap would play back the sound "stored" in the buffer a defined number of times.</p>
</blockquote>
<p dir="auto">Mm yeah, something like that could work I think.</p>
<p dir="auto">I was trying to modify (with Claude) your reverb to implement only the freeze function, and I was able to get this:</p>
<pre><code>import("stdfaust.lib");

// User controls
freeze = checkbox("Freeze[style:knob]") : si.smoo;
freezeTime = hslider("Freeze Time[unit:s]", 1, 0.1, 2, 0.1);
freezeInputMix = hslider("Freeze Input Mix[style:knob]", 0.5, 0, 1, 0.01) : si.smoo;

// Maximum delay time in samples (2 seconds)
maxDelay = int(2 * ma.SR);

freezeEffect(x) = x &lt;: (freezeLoop, _) : mixer
with {
    // Create a feedback loop for continuous playback when frozen
    freezeLoop = (+ : de.delay(maxDelay, int(freezeTime * ma.SR))) ~ (*((freeze)));

    // Mix between frozen and live input
    mixer(frozen, live) = (frozen * freeze * freezeInputMix) + 
                         (live * (1.0 - (freeze * freezeInputMix)));
};

// Stereo processing - apply freeze effect to both channels
process = par(i, 2, freezeEffect);
</code></pre>
<p dir="auto">It's functional but the loop is not perfect</p>
]]></description><link>https://forum.hise.audio/post/95627</link><guid isPermaLink="true">https://forum.hise.audio/post/95627</guid><dc:creator><![CDATA[bendurso]]></dc:creator><pubDate>Thu, 16 Jan 2025 00:34:53 GMT</pubDate></item><item><title><![CDATA[Reply to FreezeMode Functionality on Wed, 15 Jan 2025 23:21:16 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://forum.hise.audio/uid/2928">@bendurso</a><br />
The Freeze function in my reverb implementation only affects the delayed signal. If I understand correctly, you're looking for something that repeats the entire signal.</p>
<p dir="auto">If that's the case, the idea would be to start with a tap delay set to 100% wet and feedback just slightly below 1.0. Each tap would play back the sound "stored" in the buffer a defined number of times.</p>
<p dir="auto">Let me know if this captures your intention.</p>
]]></description><link>https://forum.hise.audio/post/95624</link><guid isPermaLink="true">https://forum.hise.audio/post/95624</guid><dc:creator><![CDATA[Mighty23]]></dc:creator><pubDate>Wed, 15 Jan 2025 23:21:16 GMT</pubDate></item><item><title><![CDATA[Reply to FreezeMode Functionality on Wed, 15 Jan 2025 21:21:19 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://forum.hise.audio/uid/274">@orange</a> Well, I actually have a series of effects chain before, and I would like to loop/freeze the audio at the end without altering the sound.</p>
]]></description><link>https://forum.hise.audio/post/95612</link><guid isPermaLink="true">https://forum.hise.audio/post/95612</guid><dc:creator><![CDATA[bendurso]]></dc:creator><pubDate>Wed, 15 Jan 2025 21:21:19 GMT</pubDate></item><item><title><![CDATA[Reply to FreezeMode Functionality on Wed, 15 Jan 2025 19:59:47 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://forum.hise.audio/uid/2928">@bendurso</a> said in <a href="/post/95603">FreezeMode Functionality</a>:</p>
<blockquote>
<p dir="auto">Oh yeah, I've been watching this. I was trying only to use the freeze function, but I had bad results.</p>
</blockquote>
<p dir="auto">Maybe you can keep the decay very short here and just use the freeze parameter in combination with another reverb you like. Use the reverb module before this in the process chain.</p>
]]></description><link>https://forum.hise.audio/post/95604</link><guid isPermaLink="true">https://forum.hise.audio/post/95604</guid><dc:creator><![CDATA[orange]]></dc:creator><pubDate>Wed, 15 Jan 2025 19:59:47 GMT</pubDate></item><item><title><![CDATA[Reply to FreezeMode Functionality on Wed, 15 Jan 2025 19:51:44 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://forum.hise.audio/uid/3174">@HISEnberg</a> Thanks I will check it.</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://forum.hise.audio/uid/274">@orange</a> Oh yeah, I've been watching this. I was trying only to use the freeze function, but I had bad results.</p>
<p dir="auto">Isn't there a way to do it natively in Scriptnode to loop the last 1 or 2 seconds?</p>
]]></description><link>https://forum.hise.audio/post/95603</link><guid isPermaLink="true">https://forum.hise.audio/post/95603</guid><dc:creator><![CDATA[bendurso]]></dc:creator><pubDate>Wed, 15 Jan 2025 19:51:44 GMT</pubDate></item><item><title><![CDATA[Reply to FreezeMode Functionality on Wed, 15 Jan 2025 19:43:37 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://forum.hise.audio/uid/2928">@bendurso</a> there's an RNBO effect which does this! Not sure if something exists in scriptnode but it is another case where an audio buffer node would be useful</p>
]]></description><link>https://forum.hise.audio/post/95601</link><guid isPermaLink="true">https://forum.hise.audio/post/95601</guid><dc:creator><![CDATA[HISEnberg]]></dc:creator><pubDate>Wed, 15 Jan 2025 19:43:37 GMT</pubDate></item><item><title><![CDATA[Reply to FreezeMode Functionality on Wed, 15 Jan 2025 19:45:50 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://forum.hise.audio/uid/2928">@bendurso</a> Maybe this Faust example by <a class="plugin-mentions-user plugin-mentions-a" href="https://forum.hise.audio/uid/3461">@Mighty23</a></p>
<p dir="auto"><a href="https://forum.hise.audio/topic/11250/this-is-my-reverb-in-faust-what-do-you-think/4">https://forum.hise.audio/topic/11250/this-is-my-reverb-in-faust-what-do-you-think/4</a></p>
]]></description><link>https://forum.hise.audio/post/95600</link><guid isPermaLink="true">https://forum.hise.audio/post/95600</guid><dc:creator><![CDATA[orange]]></dc:creator><pubDate>Wed, 15 Jan 2025 19:45:50 GMT</pubDate></item></channel></rss>