Mono delay
-
The Hise delay is a stereo delay. How can I create a mono delay plugin?
Secondly, the tempo sync button doesn't work right. If you test a simple plugin in a daw, engaging temposync does not work. It causes two different delay times on L/R -
@pcs800 most modules will take and process as many channels as you send them. You can check out the routing matrix and channel routing to control this.
The tempo sync works well enough in scriptnode have you tried this? You can solve both your issues with a simple network.
-
@pcs800 I think there's a ping pong delay example in the snippets browser that might give you better control than the stock Hise delay module.
-
I still think merging 2(or more) audio channels in scriptNode is a pain, unless someone has a nice simple example???
-
@Lindon a SNEX/C++ node that you create only once perhaps?
-
This post is deleted! -
@Lindon Can't you just use the routing matrix or am I missing something?
HiseSnippet 1759.3oc6XszbaaCDFzxzOSaSZSlzi5PO37XzHIqXkN8f0CaknXKaUQEmjdIAlDThVj.rjf1VsSu2a8bt0eB8X5s7en26jeB4eP5B9vhzR1VRIwsclHOiGhcwiOr62t.Xa5vTIttLGjzRs6aSPRWQVoOk2sZWrAEUeCjzmK2.6xINoCDUouM10kngjjR8.g.oEmE4+6sqWAahopjAhPn8XFpjsMrL3Cj1rzVFll0vZj1FVw5cgR0UYzpLSlGfmTxYQ1X0d3NjcvhtMiL5gX2tHoaKqpse9U0Jnlu.4aWknW39Eykundt72qXg730JT.zQJtFNORZtM0L3LGENlSbgIsBSquRW1QzfEXOCWi8MIhF4PJvJGHFUsqgoVyHiiKBII2bfoJUfo55xMLzLNQ9.S1U8UjdvHhazjl47fTtI.RRwfzrAP5ZxJpNF17AZD3YY45TvCpiAeSbnDzWjzqkqxfNP4Yrv8H0bfFmLfUVKa16lF92s9NcOpJ2fQSyn6v3jcoqbqk94kVboeYozmVkt9H0IVFGloIwYjpEzAmyafqP8r1m3b2zGhM8HmzQX6mzlN23YSUC10w5HiVmZv20lD1tFyTSXqDeOrG.EZ1fudb8MvbrvoDJC5mMwgaHfizFjCgvf.WzhxaPb6wY1PfvP9Of4vz7Lw7jzIQfVnBvdjvGJbTTWCd+3AhS.GK64xwFWHdM4lFb0tiFiyLBLBVpOFXLLx7yj2TWmnxG.vYkq8zoMLL6DGFtTXXHrlhE+JgMSW6o4FY.3uJOfra6PrwNj1rll39q3hsrMIs.Ld2z6axT6oX7SjgiPrCfPEQOVQsKlRIltSSfzbefRNgZw73FzNMvbGiigzm63Yo.40UIUCQGHSZFQLTP6rh1BdgBgp423cvuPk4DskBUlKRYrvucH7iXN87cGgeijVPX6WTlx3cAjfJaZxNpJyx1HjhBN.eYMYl8s6xnFpBQA8HBlksXdvJDh0A76JQ9hHXCGM0FaXJn6JdtPBDscoJv73ednTp8HNt9q47xYy.+Az+cXZfp4pgUACd+lXdWQbjHmDPZINYTOg7NXODm7Dbp3.ch4K5vy.LAaEKg8QbzoTpXYjBHshVPH4LATz5t6IzphMQ6IHEhch+bJ5dDXEccA4i0gytcPIP9U8QNPsxDpcXndx.mHjNyoP5WHnRMwNvTBGQ4FA1.GD5TcdNQxJRTeVPdavxhc.dzQhzUswNcHb+EItfvr3ThePiaxlg1h5ZhIuivCcBVBj4eoHzzLey6Oe4F8DFaGK7dQsfMUCCZ39aPx0F3iOkr2ttBmXGvXGzOkdjiBbiw6ovxMubvDzlbLuMy+a.zGB1Vwhtr7ioZDcvZpgFZg1fni8L4CAJTLRz7xt1lvkBOS1ef5gIQQCbR3PijFOubP.1ED+MJDDn4xJdKjlk.mKC3zgjoynQX3Ht..NSBSTB9UpX7qEGle8rWOL+B3RI4W+9Ke4et9P7qW24OtQofckOudhoWHzYQuJ6wYVvwV9W4.MwQHk9sRi0N3Ee0F+05A2pVwhEl6ch2FEJM5sQgRW.x+PX6uhbKhKgOkA3msG.k3TBqfi9O0oDNA2KHSn1QcJQnpIg9NT70mKuIbAGM3x692KODpD4h4yrJ69UdzcZsU89EakO+Fawna+i5kq8rrds52X0ha4ROPIagsassWwVMr5V9Q0L19nLU2NSOux5qV8fspV15GzXYL6emxUzeDqyC2h04vCNnbF87OMamdIikR1HgAxOMRtIOAzIi7iYFHoDoJ6LLRO+TPQC4S4f9TNnK2bPmcvWhFUXrdVX+mL7d+38aFnbY4mfOj3W9L+qseC+15LGqzOf.AzhmLm6rJf1Kd2se03V.M6wt.Z6pxAHz1AScsYtjbI7WDKi1LJwMgzSMh7ibD4S5I3dzjScfnD8RXJpAlhX865khDFqmKTpIllKNWCZGS+yJ0P7dR+lu46e0eu9lTL7hTEBry010UELL3Scc1ldltjmXnw6FadeSLw4iK9gXGMvGplnVEoR9r3YGumEmrrMw5+Hphvberpu3riWgMtfJc8e+RUknNLKFgQECQ8S1DxoXBgz9X7KkCycDIMYLYCFkEUMfALfVD3NIc5PR9NoQsgJy4X0dwY4sHlDrar3zuoTv6P8ea5zYKl7RCOR+0WKG.2zhDIoee7aWpzrysbioFqxM9AGuSeoGujiPg7m++wSeSYHmd9z9t6z+66uuLpp4kwZXgUcXOOrhchDFK3KA12zvpJ1PzNcNzgm9BVVvQOOWUM4TMz.yOsCb0ocfEl1AduocfqMsCr3zNv6ewCTbyfvWgHhSfGYzbS+a2JIEbSI+PFz+.c8c+1.
-
@HISEnberg it can quickly become a mess with multiple channels, but still easy to use...
Here's a C++ node:
template <typename T> void process(T& data) { // Get the actual number of channels from the data int numChannels = data.getNumChannels(); int numSamples = data.getNumSamples(); // Calculate dynamic gain compensation float gainCompensation = 1.0f / static_cast<float>(numChannels); // Process sample by sample for mono summation for (int sample = 0; sample < numSamples; ++sample) { // Sum all channels for this sample float monoSum = 0.0f; for (int ch = 0; ch < numChannels; ++ch) { monoSum += data[ch][sample]; } // Apply gain compensation and distribute to all channels float compensatedMono = monoSum * gainCompensation; for (int ch = 0; ch < numChannels; ++ch) { data[ch][sample] = compensatedMono; } } } template <typename T> void processFrame(T& data) { static const float gainCompensation = 1.0f / static_cast<float>(data.size()); // Sum all channels in the frame float monoSum = 0.0f; // Accumulate all channel values for (int ch = 0; ch < data.size(); ++ch) { monoSum += data[ch]; } // Apply gain compensation float compensatedMono = monoSum * gainCompensation; // Set all channels to the compensated mono sum for (int ch = 0; ch < data.size(); ++ch) { data[ch] = compensatedMono; } }