The below given code allows you to change the groove values through automation using a meta device.
The requirement is that you need a DSP meta device with four parameter sliders (I have picked an instrument automate device) and then rename the device to either ‘global groove’ or ‘groove device’. (chars in the devicename will be lowercase forced so case doesn’t matter).
Embed that code and you make a lot of folks happy. But do take care that the groove_monitor() function is called appropriately → app_new_document_observable when a new song is created or another is loaded and renoise.song().tracks_observable when the track- or group track count is modified.
groove_master_device = nil
groove_device_number = -1
groove_master_track = nil
--------------------------------------------------------------------------------
-- Main functions
--------------------------------------------------------------------------------
-- This example function is called from the GUI below.
-- It will return a random string. The GUI function displays
-- that string in a dialog.
local function monitor_groove()
local song = renoise.song()
groove_master_track = song.sequencer_track_count + 1
for x = 1, #song.tracks[groove_master_track].devices do
local device_name = string.lower(song.tracks[groove_master_track].devices[x].display_name)
if device_name == 'global groove' or device_name == 'groove device' then
groove_device_number = x
break
end
end
if groove_device_number ~= -1 then
groove_master_device = song.tracks[groove_master_track].devices[groove_device_number]
if not groove_master_device.parameters[1].value_observable:has_notifier(set_groove_slider_1) then
groove_master_device.parameters[1].value_observable:add_notifier(set_groove_slider_1)
end
if not groove_master_device.parameters[2].value_observable:has_notifier(set_groove_slider_2) then
groove_master_device.parameters[2].value_observable:add_notifier(set_groove_slider_2)
end
if not groove_master_device.parameters[3].value_observable:has_notifier(set_groove_slider_3) then
groove_master_device.parameters[2].value_observable:add_notifier(set_groove_slider_3)
end
if not groove_master_device.parameters[4].value_observable:has_notifier(set_groove_slider_4) then
groove_master_device.parameters[4].value_observable:add_notifier(set_groove_slider_4)
end
end
end
function set_groove_slider_1 ()
set_groove_slider(1)
end
function set_groove_slider_2 ()
set_groove_slider(2)
end
function set_groove_slider_3 ()
set_groove_slider(3)
end
function set_groove_slider_4 ()
set_groove_slider(4)
end
function set_groove_slider(parameter)
local song = renoise.song()
if groove_master_device.is_active then
if not song.transport.groove_enabled then
song.transport.groove_enabled = true
end
print('groove_parameter:',groove_master_device.parameters[parameter].value)
local song_groove = song.transport.groove_amounts
song_groove[parameter] = groove_master_device.parameters[parameter].value
song.transport.groove_amounts = song_groove
end
end
One more remark, the device has to be placed on the master track, but i guess that seems pretty clear from the code, but just in case adding it to the mention.