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)