Adds the ability to either destructively remove silent parts of a sample (sounds that fall below a threshold), and the ability to add silence to the end or beginning of a sample. The latter can often be useful for FX processing. Shows up as ‘Add Silence…’ and ‘Remove Silence…’ in the Sample Editor’s ‘Process’ context menu.
could add silence use the currenty selection if there is one, and the whole sample otherwise?
because adding silence would be very handy for me, but I hardly ever need to at it at the start or end of a sample, always between words in a vocal sample ^^
I can try doing that myself, but I figured I’d mention it anyway, maybe someone else is quicker
the Custom Wave Generator has been designed to be like this. Making dialogs not modal (like CWG) requires a lot of additional programming because you have to take in count of changes into instruments and samples lists (through “observable” variables, which were actually not already available when this tool was coded).
you should firstly select the sample portion you want to make changes onto and then use the tool
okay, with copypasta and guessing I begun to made the add silence dialog modal, using the CWG as a guide. but I guess it will take a while until I figured out and taken into account all the little things…
… but hey, it seems even changing between samples works “out of the box”, it always applies to the currently selected sample… seems like I’m well on my way
I don’t think that the button is a good idea: in my opinion, if the user has selected something in the sample, the script should automatically work on the selection only.
you mean the “from selection” button? that gets the time and frames from the length of the current selection.
otherwise it does exactly what you said, since in renoise there is always a selection anyway (no selection means whole sample).
which is awkward when you just click in the sample (which Renoise doesn’t seem to consider a selection), because then it adds the silence at end/start/both of the sample, and not where you clicked. but I don’t see how I can do anything about that from here?
the seconds field is confusing with very short durations as in the screenshot, because you don’t get to see the E at the end, but hey… shrugs
otherwise they update each other, which works fine as long as the duration is longer than 2 frames, which totally confuses me, so I’ll attach what I have before I progress. maybe someone can spot my mistake, especially since I might have broken other stuff too, or done it badly
(there are now two variables named int_frames (one holds the silence duration in frames), and while I don’t think they’re clashing I’ll rename that of course, so ignore that)
just for now don’t use it while you have any super important songs loaded, PLEASE, I still don’t really know what I’m doing here ^^
yeah I err noticed it breaks in other places too (for example when you hit “apply” upon an empty sample… although you can’t open the tool on an empty sample, you can then switch to one. well, now it throws an error like it should)
since in the docs it says selected_sample is “never nil”, and that seems to work nicely.
I updated the attachment above… (also notice I made the remove silence dialog modal now, though I haven’t changed anything else there. it’s just sooo much nicer to have the tool open and switch between samples!)
--these will be useful when sample selection will be available in LUA API
local int_range_start = 1
local int_range_end = int_frames
would it make sense to just set that to the (now available) selection range?
I’m asking because I don’t really get what all the code does haha… and I don’t really need to, either, to do the “get duration from selection” and “get average volume” things…
yet I wonder what the trim, trim left, trim right options do? I don’t understand that at all, neither from the code nor from look at what happens to the sample (if you use that two times nearly the whole sample gets cut?), so a little explanation would be useful (probably also for the page on tools.renoise)
yes, sure, but the problem is that, being the dialog non modal, the user can change the selection but the script will not be aware of it. I’m not sure if always using selection to perform the script will be 100% error free, as the user could also even delete the sample while keeping the dialog open (here is where observable variables come in action)
“trim silence” is a standard action in sample editors: it removes silence before or/and after the actual sounding sample data
I have got the “detect peak volume of current selection” working perfectly, and I ditched the idea of getting the average volume because a.) I don’t know how to easily do that, and b.) who needs that anyway?
but only when you hit a button to actually do something it uses the selection (and if there is no sample it aborts), so I don’t see how that would cause problems.
ahh okay, I get it now… but have you tried applying it twice… something isn’t right there? or did I introduce that?
also, it can be a bit confusing because remove/silence apply to silence, while trim applies to non-silence - so I propose changing “remove” to “remove silence” and “silence” to “mute silence”, leaving trim as is, and removing the “with relevant data” header…
Awesome! 99% awesome! The extra 1% would be achieved if song-relative lengths of silence could be inserted - in lines, beats, lines from selection in pattern, etc. as well as seconds.
I am a bit in a hurry so I will reply only to this:
a] open “add silence” dialog
b] click on the sample window and select a part of the sample
c] now rightclick on the sample box list and click on “delete” to delete the selected sample from the list
d] the “add silence” dialog is still open. press “apply” => crash
and:
if renoise.song().selected_sample ~= nil then
int_frames = 0
else
int_frames = 1.0 * renoise.song().selected_sample.sample_buffer.sample_rate
end
this snippet I have written before should be moved to the beginning of show_add_silence_dialog() function otherwise it will still crash upon Renoise loading
using a sample which has silence at the end, use “trim right” once: it will remove all the silence at the end. using it once more will not affect the sample, which is how it should behave