New Feature: SuspendOnSilence
-
@ustk said in New Feature: SuspendOnSilence:
@Christoph-Hart Mmm great! Thanks!
Yeah, that's old school but it's the only way (that I think, since you helped me a while back on that matter) to record a buffer from an input stream.So your using the process block to record incoming audio? Is that right? If so: "How are you doing that!!"
-
@Lindon Basically, you create a buffer and just copy the incoming stream into it. Since processBlock is continually firing, just set a flag (here the recordIndex is used as a flag) to tell when you want it to record the buffer.
reg recBuffer = Buffer.create(yourLength); reg recordIndex = -1; function processBlock(channels) { if (recordIndex != -1) { local numSamples = Math.min(recBuffer.length - recordIndex, channels[0].length); local temp = Buffer.referTo(recBuffer, recordIndex, numSamples); if (numSamples == channels[0].length) { channels[0] >> temp; } else { local s = Buffer.referTo(channels[0], 0, numSamples); s >> temp; } recordIndex += numSamples; if (recordIndex >= recBuffer.length) recordIndex = -1; } }
A simpler version to understand would simply be to copy the samples one by one in a for loop, but it's a bit greedy on cpu cycles. So this version Christoph gave me is much lighter since the copy process is made per block.
Bear in mind that you can't test this in Hise standalone because the inputs aren't activated.
Though I don't use the Hise plugin version for this, it should work (and the same for the exported project of course, it can't work in standalone unless activating the inputs) -
Bear in mind that you can't test this in Hise standalone because the inputs aren't activated.
I think you can test it by dragging an audio file into the HISE Controller DAW timeline...
-
@ustk said in New Feature: SuspendOnSilence:
@Lindon Basically, you create a buffer and just copy the incoming stream into it. Since processBlock is continually firing, just set a flag (here the recordIndex is used as a flag) to tell when you want it to record the buffer.
reg recBuffer = Buffer.create(yourLength); reg recordIndex = -1; function processBlock(channels) { if (recordIndex != -1) { local numSamples = Math.min(recBuffer.length - recordIndex, channels[0].length); local temp = Buffer.referTo(recBuffer, recordIndex, numSamples); if (numSamples == channels[0].length) { channels[0] >> temp; } else { local s = Buffer.referTo(channels[0], 0, numSamples); s >> temp; } recordIndex += numSamples; if (recordIndex >= recBuffer.length) recordIndex = -1; } }
A simpler version to understand would simply be to copy the samples one by one in a for loop, but it's a bit greedy on cpu cycles. So this version Christoph gave me is much lighter since the copy process is made per block.
Bear in mind that you can't test this in Hise standalone because the inputs aren't activated.
Though I don't use the Hise plugin version for this, it should work (and the same for the exported project of course, it can't work in standalone unless activating the inputs)cool.. I must find some time to look at this... Thanks.
-
This is perfect! I can't see the option to turn the suspend on silence on my scriptnode chains, though. It works on the snippet that Christoph provided. Is there anything extra I need to do to have this? I'm on the latest Develop build, compiled today.
-
@tomekslesicki It's in the same place as the allow compilation option. Make sure you have no nodes selected.
-
@d-healey It should be there when I right-click on a chain, right? !https://imgur.com/a/Gdkyge3
-
@tomekslesicki I think if you open networks that have been saved before the addition of this feature, you need to save the network and reload it again - the property editor is being built from the XML data and it needs a resave to add the properties.
-
@Christoph-Hart thanks! I added it manually to the xml and it's working like a charm now :-)
-
@Christoph-Hart Digging up that
SuspendOnSilence
not appearing in ScriptFX property
It seems the properties that are not in their default state, or just set (it's not clear to me) are purely removed from the value tree. -
@ustk Does
SuspendOnSilence
will be the cure for the peak meter lock when the signal is off? -
-
@orange Dope meter. I use a timer that periodically checks for that.
-
@clevername27 Thanks. It uses timer too. The problem here is that when there is no signal from the display buffer, the display buffer gets stuck at the last value. Do you have a method for that?
-
@orange That's a good point. I don't have suspend on silence activated for most of the plugin. (I don't trust it, lol.)
-
@clevername27 Ehehe, I haven't used it yet. Does it crash or something?
-
@orange No crash, it just felt a little sus to me – there are often issues with those types of algorithms (such as that which you are experiencing). Love that meter.
-
@clevername27 said in New Feature: SuspendOnSilence:
Love that meter.
Thanks. Meter of this: https://noiseash.com/prestige-racks/
-
@orange said in New Feature: SuspendOnSilence:
@clevername27 said in New Feature: SuspendOnSilence:
Love that meter.
Thanks. Meter of this: https://noiseash.com/prestige-racks/
mate they continue to look really really nice...
-
@Lindon Thanks mate, your stuff looks nice too
-
@orange Yeah it looks really nice!
And that must have been thousands of hours to get all these DSP emulations! Congrats