Icon representing a recipe

Recipe: Advanced Remix

created by PieThrower

Profile


Name
Advanced Remix
ID
104474
Shared with
Public
Parent
None
Children
None
Created on
February 15, 2021 at 01:18 AM UTC
Updated on
February 15, 2021 at 01:18 AM UTC
Description

Remixes and wiggles the selected segments.
Similar to Advanced Rebuild but using remix instead.

Best for


Code


-------------------------------------------------------------------------------- -- Advanced Remix -- -- Remixes and wiggles the selected segments -- Repeats a given number of times, starting from the recent best -------------------------------------------------------------------------------- remixNum = 3 localWiggleIters = 25 localShakeIters = 5 numIters = 20 lowClash = 0.3 highClash = 1.0 --[[ TODO - add proximty wiggle ]]-- initialScore = 0 tempScore = 0 function getParameters() dlg = dialog.CreateDialog("Advanced Rebuild") dlg.lowClash = dialog.AddSlider("Low Clash Importance", 0.3, 0, 1, 2) dlg.highClash = dialog.AddSlider("High Clash Importance", 1.0, 0, 1, 2) dlg.wiggleIters = dialog.AddSlider("Wiggle Iterations", 25, 1, 50, 0) dlg.shakeIters = dialog.AddSlider("Shake Iterations", 5, 1, 20, 0) dlg.remixNum = dialog.AddSlider("Number of Remixes", 10, 1, 30, 0) dlg.ok = dialog.AddButton("OK", 1) dlg.cancel = dialog.AddButton("Cancel", 0) if dialog.Show(dlg) > 0 then lowClash = dlg.lowClash.value highClash = dlg.highClash.value wiggleIters = dlg.wiggleIters.value shakeIters = dlg.shakeIters.value remixNum = dlg.remixNum.value return true else print("Program Cancelled") end return false end function getSelection() userSelected = dialog.SelectSegments() selection.DeselectAll() for i = 1, #userSelected do selection.Select(userSelected[i]) end end function remix(slotNum) -- low clash wiggle and shake behavior.SetClashImportance(lowClash) structure.WiggleSelected(localWiggleIters / 2, true, true) structure.ShakeSidechainsSelected(localShakeIters / 2) -- high clash wiggle and shake behavior.SetClashImportance(highClash) structure.WiggleSelected(localWiggleIters, true, true) structure.ShakeSidechainsSelected(localShakeIters) end function updateScore() curScore = current.GetScore() if curScore > tempScore then print("Score improved by", curScore - tempScore) tempScore = curScore end end function cleanup() recentbest.Restore() behavior.SetClashImportance(1.0) print("Script complete. Score changed by", current.GetScore() - initialScore) print("Ending score:", current.GetScore()) end function main() if not getParameters() then return false end initialScore = recentbest.GetScore() tempScore = initialScore print("Starting score:", initialScore) getSelection() structure.RemixSelected(10, remixNum) for i = 1, remixNum do print("Running Remix", i) remix(10 + i) updateScore() end cleanup() return true end xpcall(main, cleanup)

Comments