From e94092f351d9cc4f683690857b352d1bf47dd041 Mon Sep 17 00:00:00 2001 From: Tristan Rowley Date: Sat, 15 Feb 2020 20:53:32 +0000 Subject: [PATCH 1/2] rough, notworkingproperlyatall LFOModulation plugin for generation modulation levels from sequence position (mostly just for testing+demoing mx50 control) --- plugins/LFOModulation.py | 47 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 plugins/LFOModulation.py diff --git a/plugins/LFOModulation.py b/plugins/LFOModulation.py new file mode 100644 index 0000000..2083ecd --- /dev/null +++ b/plugins/LFOModulation.py @@ -0,0 +1,47 @@ +import data_centre.plugin_collection +from data_centre.plugin_collection import ActionsPlugin, SequencePlugin, DisplayPlugin +from plugins.frame_manager import Frame + +class LFOModulationPlugin(ActionsPlugin,SequencePlugin,DisplayPlugin): + disabled = False + + stop_flat = True + pause_flag = False + def __init__(self, plugin_collection): + super().__init__(plugin_collection) + + #self.PRESET_FILE_NAME = "ShaderLoopRecordPlugin/frames.json" + + self.pc.shaders.root.after(1000, self.run_automation) + + def get_display_modes(self): + return ['LFOMODU','NAV_LFO'] + + def show_plugin(self, display, display_mode): + from tkinter import Text, END + #super(DisplayPlugin).show_plugin(display, display_mode) + display.display_text.insert(END, '{} \n'.format(display.body_title)) + display.display_text.insert(END, "test from LFOModulationPlugin!\n") + + @property + def parserlist(self): + return [ ] + """( r"run_automation", self.run_automation ), + ( r"stop_automation", self.stop_automation ), + ( r"toggle_pause_automation", self.toggle_pause_automation ), + ( r"pause_automation", self.pause_automation ),""" + + def run_sequence(self, position): + import time + now = time.time() + + if self.pc.data.plugins is None: + return + + print("run_automation position %s!"%position) + + import math + self.pc.actions.call_method_name("modulate_param_0_to_amount_continuous", math.sin(position*math.pi)) #(now*100)%300) + self.pc.actions.call_method_name("modulate_param_1_to_amount_continuous", math.cos(position*math.pi)/math.pi) + self.pc.actions.call_method_name("modulate_param_2_to_amount_continuous", math.atan(position*math.pi)/math.pi) + self.pc.actions.call_method_name("modulate_param_3_to_amount_continuous", math.sin(math.sin(position*math.pi)*math.pi)) From 575bfe8b1e13264c18e87f85f2fc0fc9d97a95f2 Mon Sep 17 00:00:00 2001 From: Tristan Rowley Date: Sat, 15 Feb 2020 20:56:56 +0000 Subject: [PATCH 2/2] stubs for possible better mapping of WJ MX controls --- plugins/WJSendPlugin.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/plugins/WJSendPlugin.py b/plugins/WJSendPlugin.py index 8949ec2..f57b064 100644 --- a/plugins/WJSendPlugin.py +++ b/plugins/WJSendPlugin.py @@ -16,6 +16,18 @@ class WJSendPlugin(ActionsPlugin,SequencePlugin,DisplayPlugin,ModulationReceiver rtscts=True, # TODO : test without this one timeout=timeout)""" + """self.commands = { + 'VCG:': { + 'name': 'Colour Corrector Gain', + 'cmd': 'VCG:', + }, + 'VCC:': { + 'name': 'Colour Corrector XY', + 'cmd': 'VCC', + 'callback': self.set_colour + } + }""" + THROTTLE = 1 # milliseconds to wait between refreshing parameters def __init__(self, plugin_collection): @@ -32,7 +44,7 @@ class WJSendPlugin(ActionsPlugin,SequencePlugin,DisplayPlugin,ModulationReceiver def set_modulation_value(self, param, value): # take modulation value and throw it to local parameter - print("||||| wjsend set_modulation_value!") + print("||||| wjsend set_modulation_value for param %s with value %s!" % (param, value)) if param==0: self.set_mix((0.5+value)/2) elif param==1: