New Tool (3.0): xfade pow

Lets you create equal power crossfade loops - This means you don’t get the volume dip you normally do with the native crossfade function.
It’s not the best for every kind of sample but it can result in much smoother sounding loops than the native option.
Note that there is a risk of clipping if your source is fully normalized, it’s best to leave a bit of headroom.

The slider sets the start point of the loop. The loop end is fixed at the end of the sample (for now).

Enjoy!

com.afta8.XfadePow_V0.1.xrnx (2.9 KB)

5 Likes

Great!

What do I do with this file? I can’t drag and drop it and I can’t seem to import it anywhere.

Drag and drop it or double click it.
It should then appear in your tools menu…

Oh right, I was doing that but it wasn’t working. Downloaded it again and it worked, must have been corrupt or something. Thanks!

This has been very useful; thanks!

Awesome powerful tool, absolute beast for mashing togheter samples.

anyone else getting a click on looping?
sound is great otherwise but the click has me resorting to the native feature…

Is this on any sample try or is it on a specific sample?

Just wondering if there are any plans to get this tool into 3.1 (or if there’s still anywhere to download the last version?).

Very interested in trying this and the other tools you’ve made afta8!

Hey is there somewhere else this tool can be downloaded? I don’t see a link anywhere, thanks!

@robohymn and @scenes_of

I’ve attached the tool to the first post, looks like the file was lost after forum migration

1 Like

added this code so it can work over all sample in an instrument :

--yla 
local function xfadepow_all(loop_size)

  local smps = renoise.song().selected_instrument.samples
  for i = 1,#smps do
    local smp = smps[i]
    local smp_buffer = smp.sample_buffer
    local sample_size = smp_buffer.number_of_frames 
      
    -- Get loop start position (frames)
    local loop_start = math.floor((sample_size*loop_size)+0.5)
    
    -- Setup loop
    smp.loop_mode = 2
    smp.loop_start = loop_start
    smp.loop_end = sample_size  
      
    -- Do crossfade
    smp_buffer:prepare_sample_data_changes()
    do_crossfade(smp, loop_start, sample_size)    
    smp_buffer:finalize_sample_data_changes()
  end
end
-- and within the "Process button" section (don't forget
-- to add a comma ',' after the first button definition...)
    vb:button {
      text = "XFade All Samples",
      height = 25,
      width = 55,
      
      notifier = function()
          xfadepow_all(loop_size)
      end
    }

Very cool job indeed.

3 Likes