having parameters that affect multiple other parameters seems pretty straight forward, and there are variables for current channel, so that part should be pretty simple. soft-pickup would take a little thought. 
edit: for macro param example
-- make a function that updates multiple params, use division to set sensitivity
local function macro_control( chan, v)
params:set(chan .. "this_param", v)
params:set(chan .. "other_param", v / 2)
end
-- make a param that calls the macro_control function
params:add_control("macro", "macro", controlspec.new(0, 1, "lin", .01, 0))
params:set_action("macro", function(v) macro_control(current_chan, v) end)