mirror of
https://github.com/cyberboy666/r_e_c_u_r.git
synced 2025-12-13 03:40:15 +01:00
Merge branch 'c_o_n_j_u_r' of https://github.com/langolierz/r_e_c_u_r into c_o_n_j_u_r
This commit is contained in:
59
Shaders/1-input/hsv_control_fine.frag
Normal file
59
Shaders/1-input/hsv_control_fine.frag
Normal file
@@ -0,0 +1,59 @@
|
||||
//1-input
|
||||
#ifdef GL_ES
|
||||
precision mediump float;
|
||||
#endif
|
||||
|
||||
varying vec2 v_texcoord;
|
||||
uniform sampler2D u_tex0;
|
||||
uniform sampler2D u_tex1;
|
||||
uniform vec2 u_resolution;
|
||||
uniform float u_time;
|
||||
uniform float u_x0;
|
||||
uniform float u_x1;
|
||||
uniform float u_x2;
|
||||
uniform float u_x3;
|
||||
|
||||
vec3 rgb2grayscale(vec3 c)
|
||||
{
|
||||
return(vec3(dot(c, vec3(0.299, 0.587, 0.114))));
|
||||
}
|
||||
|
||||
vec3 rgb2hsv(vec3 c)
|
||||
{
|
||||
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||
|
||||
float d = q.x - min(q.w, q.y);
|
||||
float e = 1.0e-10;
|
||||
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||
}
|
||||
|
||||
vec3 hsv2rgb(vec3 c)
|
||||
{
|
||||
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||
}
|
||||
|
||||
void main(){
|
||||
|
||||
vec2 pos = v_texcoord;
|
||||
vec4 color = texture2D(u_tex0, pos);
|
||||
|
||||
vec3 hsv = rgb2hsv(color.rgb);
|
||||
hsv.x += 0.1*u_x0 - 0.05;
|
||||
hsv.y += 0.1*u_x1 - 0.05;
|
||||
hsv.z += 0.1*u_x2 - 0.05;
|
||||
//hsv.x += -0.2;
|
||||
vec3 rgb = hsv2rgb(hsv.xyz);
|
||||
|
||||
|
||||
gl_FragColor = vec4(rgb, color.a);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
54
Shaders/1-input/rotate_fine.frag
Normal file
54
Shaders/1-input/rotate_fine.frag
Normal file
@@ -0,0 +1,54 @@
|
||||
//1-input
|
||||
#ifdef GL_ES
|
||||
precision mediump float;
|
||||
#endif
|
||||
|
||||
varying vec2 v_texcoord;
|
||||
uniform sampler2D u_tex0;
|
||||
uniform sampler2D u_tex1;
|
||||
uniform vec2 u_resolution;
|
||||
uniform float u_time;
|
||||
uniform float u_x0;
|
||||
uniform float u_x1;
|
||||
uniform float u_x2;
|
||||
uniform float u_x3;
|
||||
|
||||
vec4 rotate(sampler2D tex, vec2 pos){
|
||||
|
||||
vec4 texColourRotate;
|
||||
vec2 center;
|
||||
//center = vec2(u_x3 / u_resolution.x, u_x4 / u_resolution.y);
|
||||
center = vec2(0.45 + 0.1*u_x1,0.45 + 0.1*u_x2);
|
||||
|
||||
pos.x = (pos.x - center.x)*(0.5 / (0.45 + 0.1*u_x3)) + center.x;
|
||||
pos.y = (pos.y - center.y)*(0.5 / (0.45 + 0.1*u_x3)) + center.y;
|
||||
|
||||
float r = distance(center, pos);
|
||||
float a = atan(pos.x - center.x, pos.y - center.y);
|
||||
|
||||
pos.x = r * cos(a + 2.0 * 3.141592 * (0.2 + 0.1*u_x0)) + 0.5;
|
||||
pos.y = r * sin(a + 2.0 * 3.141592 * (0.2 + 0.1*u_x0)) + 0.5;
|
||||
pos.x = 1.0 - pos.x;
|
||||
if((pos.x < 0.0)||(pos.y < 0.0)||(pos.x > 1.0)||(pos.y > 1.0)){
|
||||
texColourRotate = vec4(0.0);
|
||||
}
|
||||
else{
|
||||
texColourRotate = texture2D(tex, pos);
|
||||
}
|
||||
return texColourRotate;
|
||||
}
|
||||
|
||||
void main(){
|
||||
|
||||
vec2 pos = v_texcoord;
|
||||
vec4 texColour0;
|
||||
texColour0 = rotate(u_tex0, v_texcoord);
|
||||
|
||||
gl_FragColor = texColour0;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
146
actions.py
146
actions.py
@@ -7,7 +7,6 @@ import os
|
||||
from pythonosc import osc_message_builder
|
||||
from pythonosc import dispatcher
|
||||
from pythonosc import osc_server
|
||||
from pythonosc import dispatcher
|
||||
import git
|
||||
import threading
|
||||
import argparse
|
||||
@@ -73,10 +72,12 @@ class Actions(object):
|
||||
def enter_on_shaders_selection(self):
|
||||
##want to select shader if its not selected, and want to enter 'param' mode if it already is
|
||||
is_shader, is_selected_shader, selected_shader = self.shaders.enter_on_shaders_selection()
|
||||
print('is selected shader: {}'.format(is_selected_shader))
|
||||
if is_selected_shader and selected_shader['param_number'] > 0:
|
||||
self.set_shader_param_mode()
|
||||
|
||||
def map_on_shaders_selection(self):
|
||||
self.shaders.map_on_shaders_selection()
|
||||
|
||||
def clear_all_slots(self):
|
||||
self.data.clear_all_slots()
|
||||
self.display.browser_menu.generate_browser_list()
|
||||
@@ -271,13 +272,16 @@ class Actions(object):
|
||||
self.message_handler.set_message('INFO', 'cant mirror in dev mode')
|
||||
|
||||
def toggle_shaders(self):
|
||||
if self.shaders.selected_status == '▶':
|
||||
if self.shaders.selected_status_list[self.data.shader_layer] == '▶':
|
||||
self.shaders.stop_selected_shader()
|
||||
elif self.shaders.selected_status == '■':
|
||||
elif self.shaders.selected_status_list[self.data.shader_layer] == '■':
|
||||
self.shaders.start_selected_shader()
|
||||
else:
|
||||
self.message_handler.set_message('INFO', 'no shader loaded')
|
||||
|
||||
def toggle_shader_speed(self):
|
||||
self.shaders.toggle_shader_speed()
|
||||
|
||||
def toggle_player_mode(self):
|
||||
if self.data.player_mode == 'now':
|
||||
self.data.player_mode = 'next'
|
||||
@@ -301,6 +305,53 @@ class Actions(object):
|
||||
self.data.detour_settings['is_playing'] = is_playing
|
||||
self.video_driver.osc_client.send_message("/detour/is_playing", is_playing)
|
||||
|
||||
def toggle_feedback(self):
|
||||
print('toggle here')
|
||||
self.data.feedback_active = not self.data.feedback_active
|
||||
self.video_driver.osc_client.send_message("/toggle_feedback", self.data.feedback_active)
|
||||
|
||||
def play_shader_0(self):
|
||||
self.play_this_shader(0)
|
||||
|
||||
def play_shader_1(self):
|
||||
self.play_this_shader(1)
|
||||
|
||||
def play_shader_2(self):
|
||||
self.play_this_shader(2)
|
||||
|
||||
def play_shader_3(self):
|
||||
self.play_this_shader(3)
|
||||
|
||||
def play_shader_4(self):
|
||||
self.play_this_shader(4)
|
||||
|
||||
def play_shader_5(self):
|
||||
self.play_this_shader(5)
|
||||
|
||||
def play_shader_6(self):
|
||||
self.play_this_shader(6)
|
||||
|
||||
def play_shader_7(self):
|
||||
self.play_this_shader(7)
|
||||
|
||||
def play_shader_8(self):
|
||||
self.play_this_shader(8)
|
||||
|
||||
def play_shader_9(self):
|
||||
self.play_this_shader(9)
|
||||
|
||||
def play_this_shader(self, number):
|
||||
self.shaders.play_this_shader(number)
|
||||
|
||||
def previous_shader_layer(self):
|
||||
self.data.update_shader_layer_by_amount(-1)
|
||||
|
||||
def next_shader_layer(self):
|
||||
self.data.update_shader_layer_by_amount(1)
|
||||
|
||||
def clear_shader_bank(self):
|
||||
self.data.clear_all_shader_slots()
|
||||
|
||||
def toggle_detour_record(self):
|
||||
if self.data.settings['detour']['TRY_DEMO']['value'] == 'enabled':
|
||||
is_recording = not self.data.detour_settings['is_recording']
|
||||
@@ -398,17 +449,60 @@ class Actions(object):
|
||||
def set_the_next_video_alpha_continuous(self, amount):
|
||||
self.video_driver.next_player.set_alpha_value(amount*255)
|
||||
|
||||
def set_the_shader_param_0_continuous(self, amount):
|
||||
self.shaders.set_param_to_amount(0, amount)
|
||||
def set_the_shader_param_0_layer_offset_0_continuous(self, amount):
|
||||
self.shaders.set_param_to_amount(0, amount, layer_offset=0)
|
||||
|
||||
def set_the_shader_param_1_continuous(self, amount):
|
||||
self.shaders.set_param_to_amount(1, amount)
|
||||
def set_the_shader_param_1_layer_offset_0_continuous(self, amount):
|
||||
self.shaders.set_param_to_amount(1, amount, layer_offset=0)
|
||||
|
||||
def set_the_shader_param_2_continuous(self, amount):
|
||||
self.shaders.set_param_to_amount(2, amount)
|
||||
def set_the_shader_param_2_layer_offset_0_continuous(self, amount):
|
||||
self.shaders.set_param_to_amount(2, amount, layer_offset=0)
|
||||
|
||||
def set_the_shader_param_3_continuous(self, amount):
|
||||
self.shaders.set_param_to_amount(3, amount)
|
||||
def set_the_shader_param_3_layer_offset_0_continuous(self, amount):
|
||||
self.shaders.set_param_to_amount(3, amount, layer_offset=0)
|
||||
|
||||
def set_the_shader_param_0_layer_offset_1_continuous(self, amount):
|
||||
self.shaders.set_param_to_amount(0, amount, layer_offset=1)
|
||||
|
||||
def set_the_shader_param_1_layer_offset_1_continuous(self, amount):
|
||||
self.shaders.set_param_to_amount(1, amount, layer_offset=1)
|
||||
|
||||
def set_the_shader_param_2_layer_offset_1_continuous(self, amount):
|
||||
self.shaders.set_param_to_amount(2, amount, layer_offset=1)
|
||||
|
||||
def set_the_shader_param_3_layer_offset_1_continuous(self, amount):
|
||||
self.shaders.set_param_to_amount(3, amount, layer_offset=1)
|
||||
|
||||
def set_the_shader_param_0_layer_offset_2_continuous(self, amount):
|
||||
self.shaders.set_param_to_amount(0, amount, layer_offset=2)
|
||||
|
||||
def set_the_shader_param_1_layer_offset_2_continuous(self, amount):
|
||||
self.shaders.set_param_to_amount(1, amount, layer_offset=2)
|
||||
|
||||
def set_the_shader_param_2_layer_offset_2_continuous(self, amount):
|
||||
self.shaders.set_param_to_amount(2, amount, layer_offset=2)
|
||||
|
||||
def set_the_shader_param_3_layer_offset_2_continuous(self, amount):
|
||||
self.shaders.set_param_to_amount(3, amount, layer_offset=2)
|
||||
|
||||
def set_the_shader_param_0_layer_offset_3_continuous(self, amount):
|
||||
self.shaders.set_param_to_amount(0, amount, layer_offset=2)
|
||||
|
||||
def set_the_shader_param_1_layer_offset_3_continuous(self, amount):
|
||||
self.shaders.set_param_to_amount(1, amount, layer_offset=2)
|
||||
|
||||
def set_the_shader_param_2_layer_offset_3_continuous(self, amount):
|
||||
self.shaders.set_param_to_amount(2, amount, layer_offset=2)
|
||||
|
||||
def set_the_shader_param_3_layer_offset_3_continuous(self, amount):
|
||||
self.shaders.set_param_to_amount(3, amount, layer_offset=2)
|
||||
|
||||
def set_strobe_amount_continuous(self, amount):
|
||||
scaled_amount = int(amount * 10)
|
||||
if self.data.settings['shader']['STROBE_AMOUNT']['value'] != scaled_amount:
|
||||
print(scaled_amount)
|
||||
self.video_driver.osc_client.send_message("/set_strobe", scaled_amount)
|
||||
self.data.settings['shader']['STROBE_AMOUNT']['value'] = scaled_amount
|
||||
|
||||
def get_midi_status(self):
|
||||
self.message_handler.set_message('INFO', 'midi status is {}'.format(self.data.midi_status))
|
||||
@@ -440,6 +534,10 @@ class Actions(object):
|
||||
subprocess.call(['tvservice --preferred'], shell=True)
|
||||
elif self.data.settings['video']['HDMI_MODE']['value'] == 'CEA 4 HDMI':
|
||||
subprocess.call(['tvservice -e=\"CEA 4 HDMI\"'], shell=True)
|
||||
elif self.data.settings['video']['HDMI_MODE']['value'] == 'CEA 17 HDMI':
|
||||
subprocess.call(['tvservice -e=\"CEA 17 HDMI\"'], shell=True)
|
||||
elif self.data.settings['video']['HDMI_MODE']['value'] == 'CEA 1 HDMI':
|
||||
subprocess.call(['tvservice -e=\"CEA 1 HDMI\"'], shell=True)
|
||||
self.refresh_frame_buffer_and_restart_openframeworks()
|
||||
|
||||
def check_and_set_output_mode_on_boot(self):
|
||||
@@ -458,7 +556,6 @@ class Actions(object):
|
||||
self.change_hdmi_settings('CEA 4 HDMI')
|
||||
|
||||
|
||||
|
||||
def check_dev_mode(self):
|
||||
#### check if in dev mode:(ie not using the lcd screen)
|
||||
with open('/boot/config.txt', 'r') as config:
|
||||
@@ -605,10 +702,10 @@ class Actions(object):
|
||||
self.shaders.decrease_this_param(self.data.settings['shader']['SHADER_PARAM']['value'])
|
||||
|
||||
def increase_param_focus(self):
|
||||
self.shaders.focused_param = (self.shaders.focused_param + 1)%self.shaders.selected_shader['param_number']
|
||||
self.shaders.focused_param = (self.shaders.focused_param + 1)%self.shaders.selected_shader_list[self.data.shader_layer]['param_number']
|
||||
|
||||
def decrease_param_focus(self):
|
||||
self.shaders.focused_param = (self.shaders.focused_param - 1)%self.shaders.selected_shader['param_number']
|
||||
self.shaders.focused_param = (self.shaders.focused_param - 1)%self.shaders.selected_shader_list[self.data.shader_layer]['param_number']
|
||||
|
||||
def increase_shader_param(self):
|
||||
options = self.data.settings['shader']['SHADER_PARAM']['options']
|
||||
@@ -733,6 +830,8 @@ class Actions(object):
|
||||
current_recur_hash = recur_repo.head.object.hexsha
|
||||
current_conjur_hash = conjur_repo.head.object.hexsha
|
||||
current_ofxVideoArtTools_hash = ofxVideoArtTools_repo.head.object.hexsha
|
||||
os.remove('/home/pi/r_e_c_u_r/json_objects/settings.json')
|
||||
os.remove(self.data.PATH_TO_DATA_OBJECTS + self.data.SETTINGS_JSON )
|
||||
try:
|
||||
recur_repo.remotes.origin.pull()
|
||||
conjur_repo.remotes.origin.pull()
|
||||
@@ -752,20 +851,15 @@ class Actions(object):
|
||||
new_conjur_hash = conjur_repo.head.object.hexsha
|
||||
new_ofxVideoArtTools_hash = ofxVideoArtTools_repo.head.object.hexsha
|
||||
if current_recur_hash != new_recur_hash or current_conjur_hash != new_conjur_hash or current_ofxVideoArtTools_hash != new_ofxVideoArtTools_hash :
|
||||
#something has changed!
|
||||
os.remove('/home/pi/r_e_c_u_r/json_objects/settings.json')
|
||||
if current_conjur_hash != new_conjur_hash or current_ofxVideoArtTools_hash != new_ofxVideoArtTools_hash :
|
||||
self.message_handler.set_message('INFO', 'compiling OF pls wait')
|
||||
self.tk.after(100,self.complie_openframeworks)
|
||||
else:
|
||||
self.restart_the_program()
|
||||
#something has changed!
|
||||
self.restart_the_program()
|
||||
else:
|
||||
self.message_handler.set_message('INFO', 'up to date !')
|
||||
|
||||
def complie_openframeworks(self):
|
||||
subprocess.call(['make', '--directory=' + self.data.PATH_TO_OPENFRAMEWORKS + 'apps/myApps/c_o_n_j_u_r' ])
|
||||
self.message_handler.set_message('INFO', 'finished compiling!')
|
||||
self.restart_the_program()
|
||||
# def complie_openframeworks(self):
|
||||
# subprocess.call(['make', '--directory=' + self.data.PATH_TO_OPENFRAMEWORKS + 'apps/myApps/c_o_n_j_u_r' ])
|
||||
# self.message_handler.set_message('INFO', 'finished compiling!')
|
||||
# self.restart_the_program()
|
||||
|
||||
def shutdown_pi(self):
|
||||
subprocess.call(['sudo', 'shutdown', '-h', 'now'])
|
||||
|
||||
@@ -6,13 +6,14 @@ from random import randint
|
||||
import inspect
|
||||
from itertools import cycle
|
||||
from omxplayer.player import OMXPlayer
|
||||
|
||||
from shutil import copyfile
|
||||
|
||||
|
||||
|
||||
class Data(object):
|
||||
|
||||
BANK_DATA_JSON = 'display_data.json'
|
||||
SHADER_BANK_DATA_JSON = 'shader_bank_data.json'
|
||||
SETTINGS_JSON = 'settings.json'
|
||||
DEFAULT_SETTINGS_JSON = 'settings_default.json'
|
||||
KEYPAD_MAPPING_JSON = 'keypad_action_mapping.json'
|
||||
@@ -23,6 +24,7 @@ class Data(object):
|
||||
PATH_TO_EXTERNAL_DEVICES = '/media/pi'
|
||||
PATH_TO_OPENFRAMEWORKS = '/home/pi/openframeworks10.1/'
|
||||
PATH_TO_CONJUR_DATA = PATH_TO_OPENFRAMEWORKS + 'apps/myApps/c_o_n_j_u_r/bin/data/settings.xml'
|
||||
PATH_TO_DEFAULT_CONJUR_DATA = PATH_TO_OPENFRAMEWORKS + 'apps/myApps/c_o_n_j_u_r/bin/data/settings_default.xml'
|
||||
|
||||
def __init__(self, message_handler):
|
||||
self.message_handler = message_handler
|
||||
@@ -42,19 +44,31 @@ class Data(object):
|
||||
self.update_screen = True
|
||||
self.confirm_action = None
|
||||
self.player_mode = 'now'
|
||||
|
||||
self.feedback_active = False
|
||||
self.detour_active = False
|
||||
self.detour_mix_shaders = self.get_list_of_two_input_shaders()
|
||||
self.detour_settings = collections.OrderedDict([('current_detour',0), ('is_playing', False), ('is_recording', False), ('record_loop', False), ('detour_size', False), ('detour_speed', 0), ('memory_full', False), ('mix_shader', self.detour_mix_shaders[0]), ('detour_position', 5), ('detour_start', 0), ('detour_end', 0), ('detour_mix', 0), ('is_delay', False)])
|
||||
|
||||
self.next_bankslot = '0-0'
|
||||
self.current_bankslot = '0-0'
|
||||
|
||||
self.shader_layer = 0
|
||||
|
||||
### persisted data (use default if doesnt exits):
|
||||
if not os.path.isfile(self.PATH_TO_CONJUR_DATA):
|
||||
os.remove(self.PATH_TO_DATA_OBJECTS + self.SETTINGS_JSON ) # keep the, in sync
|
||||
copyfile(self.PATH_TO_DEFAULT_CONJUR_DATA, self.PATH_TO_CONJUR_DATA)
|
||||
|
||||
self.bank_data = [self.create_empty_bank()]
|
||||
if os.path.isfile(self.PATH_TO_DATA_OBJECTS + self.BANK_DATA_JSON):
|
||||
self.bank_data = self._read_json(self.BANK_DATA_JSON)
|
||||
|
||||
self.next_bankslot = '0-0'
|
||||
self.current_bankslot = '0-0'
|
||||
|
||||
self.shader_bank_data = [self.create_empty_shader_bank() for i in range(3)]
|
||||
if os.path.isfile(self.PATH_TO_DATA_OBJECTS + self.SHADER_BANK_DATA_JSON):
|
||||
self.shader_bank_data = self._read_json(self.SHADER_BANK_DATA_JSON)
|
||||
self.settings = self._read_json(self.DEFAULT_SETTINGS_JSON)
|
||||
|
||||
if os.path.isfile(self.PATH_TO_DATA_OBJECTS + self.SETTINGS_JSON):
|
||||
self.settings = self._read_json(self.SETTINGS_JSON)
|
||||
|
||||
@@ -62,13 +76,18 @@ class Data(object):
|
||||
self.midi_mappings = self._read_json(self.MIDI_MAPPING_JSON)
|
||||
self.analog_mappings = self._read_json(self.ANALOG_MAPPING_JSON)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@staticmethod
|
||||
def create_empty_bank():
|
||||
empty_slot = dict(name='', location='', length=-1, start=-1, end=-1, rate=1)
|
||||
return [empty_slot for i in range(10)]
|
||||
|
||||
@staticmethod
|
||||
def create_empty_shader_bank():
|
||||
empty_slot = dict(name='', path='', param_number=4, shad_type='-')
|
||||
return [empty_slot for i in range(10)]
|
||||
|
||||
def _read_json(self, file_name):
|
||||
with open(self.PATH_TO_DATA_OBJECTS + file_name) as data_file:
|
||||
@@ -104,6 +123,8 @@ class Data(object):
|
||||
if setting_key == setting_name:
|
||||
return folder_key, setting_key, setting_item
|
||||
|
||||
##### setting and adding to sample mapping ######
|
||||
|
||||
def create_new_slot_mapping_in_first_open(self, file_name):
|
||||
######## used for mapping current video to next available slot ########
|
||||
for index, slot in enumerate(self.bank_data[self.bank_number]):
|
||||
@@ -149,6 +170,33 @@ class Data(object):
|
||||
self.next_bankslot = '{}-{}'.format(self.bank_number,new_value)
|
||||
return True
|
||||
|
||||
######## setting and adding to shader mapping
|
||||
|
||||
|
||||
def create_new_shader_mapping_in_first_open(self, file_name):
|
||||
######## used for mapping current shader to next available slot ########
|
||||
for index, slot in enumerate(self.shader_bank_data[self.shader_layer]):
|
||||
if (not slot['name']):
|
||||
self.create_new_shader_mapping(index, file_name)
|
||||
return True
|
||||
return False
|
||||
|
||||
def create_new_shader_mapping(self, slot_number, file_name):
|
||||
######## used for mapping current shader to a specific slot ########
|
||||
has_location, location = self._get_path_for_file(file_name)
|
||||
print('file_name:{},has_location:{}, location:{}'.format(file_name,has_location, location))
|
||||
new_slot = dict(name=file_name, path=location, shad_type='-', param_number=4)
|
||||
self._update_a_shader_slots_data(slot_number, new_slot)
|
||||
|
||||
def clear_all_shader_slots(self):
|
||||
self.shader_bank_data[self.shader_layer] = self.create_empty_shader_bank()
|
||||
self._update_json(self.SHADER_BANK_DATA_JSON, self.shader_bank_data)
|
||||
|
||||
def update_shader_layer_by_amount(self, amount):
|
||||
self.shader_layer = (self.shader_layer + amount) % len(self.shader_bank_data)
|
||||
|
||||
|
||||
|
||||
def update_setting_value(self, setting_folder, setting_name, setting_value):
|
||||
self.settings[setting_folder][setting_name]['value'] = setting_value
|
||||
self._update_json(self.SETTINGS_JSON, self.settings)
|
||||
@@ -277,7 +325,7 @@ class Data(object):
|
||||
|
||||
def _get_path_for_file(self, file_name):
|
||||
######## returns full path for a given file name ########
|
||||
for path in self.PATHS_TO_BROWSER:
|
||||
for path in self.PATHS_TO_BROWSER + self.PATHS_TO_SHADERS:
|
||||
for root, dirs, files in os.walk(path):
|
||||
if file_name in files:
|
||||
return True, '{}/{}'.format(root, file_name)
|
||||
@@ -316,6 +364,8 @@ class Data(object):
|
||||
display_modes = [[ "SAMPLER",'PLAYER'], ["BROWSER",'NAV_BROWSER'],["SETTINGS",'NAV_SETTINGS']]
|
||||
if self.settings['video']['VIDEOPLAYER_BACKEND']['value'] != 'omxplayer' and self.settings['shader']['USE_SHADER']['value'] == 'enabled':
|
||||
display_modes.append(["SHADERS",'NAV_SHADERS'])
|
||||
if self.settings['shader']['USE_SHADER_BANK']['value'] == 'enabled' and ["SHADERS",'NAV_SHADERS'] in display_modes:
|
||||
display_modes.append(["SHDR_BNK",'PLAY_SHADER'])
|
||||
if self.settings['detour']['TRY_DEMO']['value'] == 'enabled':
|
||||
display_modes.append(["FRAMES",'NAV_DETOUR'])
|
||||
if not with_nav_mode:
|
||||
@@ -331,6 +381,11 @@ class Data(object):
|
||||
######## overwrite a given slots info with new data ########
|
||||
self.bank_data[self.bank_number][slot_number] = slot_info
|
||||
self._update_json(self.BANK_DATA_JSON, self.bank_data)
|
||||
|
||||
def _update_a_shader_slots_data(self, slot_number, slot_info):
|
||||
######## overwrite a given slots info with new data ########
|
||||
self.shader_bank_data[self.shader_layer][slot_number] = slot_info
|
||||
self._update_json(self.SHADER_BANK_DATA_JSON, self.shader_bank_data)
|
||||
|
||||
@staticmethod
|
||||
def make_empty_if_none(input):
|
||||
|
||||
@@ -52,7 +52,7 @@ class Display(object):
|
||||
self.display_text.pack()
|
||||
|
||||
def _load_title(self):
|
||||
if self.data.display_mode == 'SHADERS':
|
||||
if self.data.display_mode == 'SHADERS' or self.data.display_mode == 'SHDR_BNK':
|
||||
self.display_text.insert(END, self.TITLES[1] + ' \n')
|
||||
self.display_text.tag_add("TITLE", 1.19, 1.31)
|
||||
elif self.data.display_mode == 'FRAMES':
|
||||
@@ -88,6 +88,8 @@ class Display(object):
|
||||
self._load_sampler()
|
||||
elif self.data.display_mode == 'SHADERS':
|
||||
self._load_shaders()
|
||||
elif self.data.display_mode == 'SHDR_BNK':
|
||||
self._load_shader_bank()
|
||||
elif self.data.display_mode == 'FRAMES':
|
||||
self._load_detour()
|
||||
self.display_text.tag_add("DISPLAY_MODE", 4.19, 4.29)
|
||||
@@ -167,12 +169,12 @@ class Display(object):
|
||||
self.display_text.insert(END, '{} \n'.format(self.body_title))
|
||||
|
||||
## showing current shader info:
|
||||
shader = self.shaders.selected_shader
|
||||
self.display_text.insert(END, '{:<1}:{:<1}{:<2} {:<17} '.format \
|
||||
(self.shaders.selected_status,shader['shad_type'][0], \
|
||||
format(shader['shad_index'],'02d'), shader['name'].lstrip()[0:17] ))
|
||||
shader = self.shaders.selected_shader_list[self.data.shader_layer]
|
||||
self.display_text.insert(END, '{:<1}lay{:<1}:{:<2} {:<16} '.format \
|
||||
(self.data.shader_layer,self.shaders.selected_status_list[self.data.shader_layer],shader['shad_type'][0], \
|
||||
shader['name'].lstrip()[0:16] ))
|
||||
for i in range(min(4,shader['param_number'])):
|
||||
display_param = self.format_param_value(self.shaders.selected_param_values[i])
|
||||
display_param = self.format_param_value(self.shaders.selected_param_list[self.data.shader_layer][i])
|
||||
if display_param == 100:
|
||||
display_param == 99
|
||||
self.display_text.insert(END, 'x{}:{:02d}'.format(i, display_param))
|
||||
@@ -194,6 +196,37 @@ class Display(object):
|
||||
if self.data.control_mode == "SHADER_PARAM":
|
||||
self._highlight_this_param(self.shaders.focused_param)
|
||||
|
||||
def _load_shader_bank(self):
|
||||
shader_bank_data = self.data.shader_bank_data[self.data.shader_layer]
|
||||
|
||||
self.display_text.insert(END, '{} \n'.format(self.body_title))
|
||||
|
||||
self.display_text.insert(END, '{:>6} {:<11} {:<5} '.format(
|
||||
'{}-layer'.format(self.data.shader_layer), 'name', 'type'))
|
||||
|
||||
shader = self.shaders.selected_shader_list[self.data.shader_layer]
|
||||
|
||||
for i in range(min(4,shader['param_number'])):
|
||||
display_param = self.format_param_value(self.shaders.selected_param_list[self.data.shader_layer][i])
|
||||
if display_param == 100:
|
||||
display_param == 99
|
||||
self.display_text.insert(END, 'x{}:{:02d}'.format(i, display_param))
|
||||
self.display_text.insert(END, '\n')
|
||||
|
||||
for index, slot in enumerate(shader_bank_data):
|
||||
name_without_extension = slot['name'].rsplit('.',1)[0]
|
||||
self.display_text.insert(END, '{:^6} {:<17} {:<5} \n'.format(index, name_without_extension[0:17], slot['shad_type']))
|
||||
if index % 2:
|
||||
self.display_text.tag_add("ZEBRA_STRIPE", self.ROW_OFFSET + index,
|
||||
self.ROW_OFFSET + self.SELECTOR_WIDTH + index)
|
||||
# highlight the slot of the selected player
|
||||
current_slot = self.shaders.selected_shader_list[self.data.shader_layer].get('slot', None)
|
||||
not_playing_tag = self.shaders.selected_status_list[self.data.shader_layer] != '▶'
|
||||
if current_slot is not None:
|
||||
self._highlight_this_row(current_slot, gray=not_playing_tag)
|
||||
|
||||
self._highlight_this_param(self.shaders.focused_param)
|
||||
|
||||
|
||||
def _load_detour(self):
|
||||
line_count = 0
|
||||
@@ -224,13 +257,19 @@ class Display(object):
|
||||
self.display_text.insert(END, '{:^47} \n'.format('< FUNCTION KEY ON >'))
|
||||
self.display_text.tag_add('FUNCTION', 16.0,16.0 + self.SELECTOR_WIDTH)
|
||||
else:
|
||||
self.display_text.insert(END, '{:8} {:<10} \n'.format('CONTROL:', self.data.control_mode))
|
||||
feedback = ''
|
||||
if self.data.feedback_active:
|
||||
feedback = 'FDBCK'
|
||||
self.display_text.insert(END, '{:8} {:<28} {:>5} \n'.format('CONTROL:', self.data.control_mode, feedback))
|
||||
self.display_text.tag_add('TITLE', 16.0,16.0 + self.SELECTOR_WIDTH)
|
||||
|
||||
def _highlight_this_row(self, row):
|
||||
def _highlight_this_row(self, row, gray=False):
|
||||
highlight_tag = "SELECT"
|
||||
if gray:
|
||||
highlight_tag = "BROKEN_PATH"
|
||||
self.display_text.tag_remove("ZEBRA_STRIPE", self.ROW_OFFSET + row,
|
||||
self.ROW_OFFSET + self.SELECTOR_WIDTH + row)
|
||||
self.display_text.tag_add("SELECT", self.ROW_OFFSET + row,
|
||||
self.display_text.tag_add(highlight_tag, self.ROW_OFFSET + row,
|
||||
self.ROW_OFFSET + self.SELECTOR_WIDTH + row)
|
||||
|
||||
def _unhighlight_this_row(self, row):
|
||||
@@ -239,7 +278,7 @@ class Display(object):
|
||||
|
||||
def _highlight_this_param(self, param_num):
|
||||
param_row = self.ROW_OFFSET - 1
|
||||
column_offset = 0.24
|
||||
column_offset = 0.26
|
||||
param_length = 0.05
|
||||
self.display_text.tag_add("SHADER_PARAM", round(param_row + column_offset + param_num*param_length,2),
|
||||
round(param_row + column_offset + (param_num+1)*param_length, 2))
|
||||
|
||||
@@ -1,34 +1,34 @@
|
||||
{
|
||||
"0": {
|
||||
"DEFAULT": ["set_the_shader_param_0_continuous"],
|
||||
"DEFAULT": ["set_the_shader_param_0_layer_offset_0_continuous"],
|
||||
"NAV_DETOUR": ["set_detour_mix_continuous"]
|
||||
},
|
||||
"1": {
|
||||
"DEFAULT": ["set_the_shader_param_1_continuous"],
|
||||
"DEFAULT": ["set_the_shader_param_1_layer_offset_0_continuous"],
|
||||
"NAV_DETOUR": ["set_detour_speed_position_continuous"]
|
||||
},
|
||||
"2": {
|
||||
"DEFAULT": ["set_the_shader_param_2_continuous"],
|
||||
"DEFAULT": ["set_the_shader_param_2_layer_offset_0_continuous"],
|
||||
"NAV_DETOUR": ["set_detour_start_continuous"]
|
||||
},
|
||||
"3": {
|
||||
"DEFAULT": ["set_the_shader_param_3_continuous"],
|
||||
"DEFAULT": ["set_the_shader_param_3_layer_offset_0_continuous"],
|
||||
"NAV_DETOUR": ["set_detour_end_continuous"]
|
||||
},
|
||||
"4": {
|
||||
"DEFAULT": ["set_the_shader_param_0_continuous"],
|
||||
"DEFAULT": ["set_the_shader_param_0_layer_offset_0_continuous"],
|
||||
"NAV_DETOUR": ["set_detour_mix_continuous"]
|
||||
},
|
||||
"5": {
|
||||
"DEFAULT": ["set_the_shader_param_1_continuous"],
|
||||
"DEFAULT": ["set_the_shader_param_1_layer_offset_0_continuous"],
|
||||
"NAV_DETOUR": ["set_detour_speed_position_continuous"]
|
||||
},
|
||||
"6": {
|
||||
"DEFAULT": ["set_the_shader_param_2_continuous"],
|
||||
"DEFAULT": ["set_the_shader_param_2_layer_offset_0_continuous"],
|
||||
"NAV_DETOUR": ["set_detour_start_continuous"]
|
||||
},
|
||||
"7": {
|
||||
"DEFAULT": ["set_the_shader_param_3_continuous"],
|
||||
"DEFAULT": ["set_the_shader_param_3_layer_offset_0_continuous"],
|
||||
"NAV_DETOUR": ["set_detour_end_continuous"]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
"NAV_SHADERS": ["move_shaders_selection_up"],
|
||||
"LENGTH_SET": ["return_to_default_control_mode"],
|
||||
"CONFIRM": ["return_to_default_control_mode"],
|
||||
"SHADER_PARAM": ["decrease_this_param", "decrease_shader_param"]
|
||||
"SHADER_PARAM": ["decrease_this_param", "decrease_shader_param"],
|
||||
"PLAY_SHADER": ["decrease_this_param", "decrease_shader_param"]
|
||||
},
|
||||
"b": {
|
||||
"NAV_BROWSER": ["move_browser_selection_down"],
|
||||
@@ -15,17 +16,20 @@
|
||||
"NAV_SHADERS": ["move_shaders_selection_down"],
|
||||
"LENGTH_SET": ["return_to_default_control_mode"],
|
||||
"CONFIRM": ["return_to_default_control_mode"],
|
||||
"SHADER_PARAM": ["increase_this_param", "increase_shader_param"]
|
||||
"SHADER_PARAM": ["increase_this_param", "increase_shader_param"],
|
||||
"PLAY_SHADER": ["increase_this_param", "increase_shader_param"]
|
||||
|
||||
},
|
||||
"c": {
|
||||
"NAV_BROWSER": ["enter_on_browser_selection"],
|
||||
"DEFAULT": ["toggle_action_on_player","toggle_show_on_player"],
|
||||
"NAV_SETTINGS": ["enter_on_settings_selection"],
|
||||
"NAV_SHADERS": ["enter_on_shaders_selection"],
|
||||
"NAV_SHADERS": ["enter_on_shaders_selection", "map_on_shaders_selection"],
|
||||
"LENGTH_SET": ["record_fixed_length"],
|
||||
"SHADER_PARAM": ["return_to_default_control_mode"],
|
||||
"CONFIRM": ["perform_confirm_action"],
|
||||
"NAV_DETOUR": ["toggle_detour_play"]
|
||||
"NAV_DETOUR": ["toggle_detour_play"],
|
||||
"PLAY_SHADER": ["toggle_shaders", "toggle_shader_speed"]
|
||||
},
|
||||
"d": {
|
||||
"DEFAULT": ["switch_to_next_player", "toggle_player_mode"],
|
||||
@@ -34,11 +38,13 @@
|
||||
"e": {
|
||||
"DEFAULT": ["set_playing_sample_start_to_current_duration", "clear_playing_sample_start_time"],
|
||||
"SHADER_PARAM": ["decrease_param_focus"],
|
||||
"PLAY_SHADER": ["decrease_param_focus"],
|
||||
"NAV_DETOUR": ["decrease_mix_shader"]
|
||||
},
|
||||
"f": {
|
||||
"DEFAULT": ["set_playing_sample_end_to_current_duration", "clear_playing_sample_end_time"],
|
||||
"SHADER_PARAM": ["increase_param_focus"],
|
||||
"PLAY_SHADER": ["increase_param_focus"],
|
||||
"NAV_DETOUR": ["increase_mix_shader"]
|
||||
},
|
||||
"g": {
|
||||
@@ -51,36 +57,49 @@
|
||||
},
|
||||
"j": {
|
||||
"DEFAULT": ["load_slot_0_into_next_player","previous_bank"],
|
||||
"PLAY_SHADER": ["play_shader_0","previous_shader_layer"],
|
||||
"NAV_SHADERS": ["play_shader_0","previous_shader_layer"],
|
||||
"NAV_DETOUR": ["switch_to_detour_0", "set_the_detour_mix_0"]
|
||||
},
|
||||
"k": {
|
||||
"DEFAULT": ["load_slot_1_into_next_player","next_bank"],
|
||||
"PLAY_SHADER": ["play_shader_1","next_shader_layer"],
|
||||
"NAV_SHADERS": ["play_shader_1","next_shader_layer"],
|
||||
"NAV_DETOUR": ["switch_to_detour_1", "set_the_detour_mix_1"]
|
||||
},
|
||||
"l": {
|
||||
"DEFAULT": ["load_slot_2_into_next_player","clear_all_slots"],
|
||||
"PLAY_SHADER": ["play_shader_2","clear_shader_bank"],
|
||||
"NAV_SHADERS": ["play_shader_2","clear_shader_bank"],
|
||||
"NAV_DETOUR": ["switch_to_detour_2", "clear_this_detour"]
|
||||
},
|
||||
"m": {
|
||||
"DEFAULT": ["load_slot_3_into_next_player"],
|
||||
"PLAY_SHADER": ["play_shader_3"],
|
||||
"NAV_DETOUR": ["switch_to_detour_3"]
|
||||
},
|
||||
"n": {
|
||||
"DEFAULT": ["load_slot_4_into_next_player"]
|
||||
"DEFAULT": ["load_slot_4_into_next_player"],
|
||||
"PLAY_SHADER": ["play_shader_4"]
|
||||
},
|
||||
"o": {
|
||||
"DEFAULT": ["load_slot_5_into_next_player","toggle_screen_mirror"]
|
||||
"DEFAULT": ["load_slot_5_into_next_player","toggle_screen_mirror"],
|
||||
"PLAY_SHADER": ["play_shader_5", "toggle_screen_mirror"]
|
||||
},
|
||||
"p": {
|
||||
"DEFAULT": ["load_slot_6_into_next_player","toggle_shaders"]
|
||||
"DEFAULT": ["load_slot_6_into_next_player","toggle_shaders"],
|
||||
"PLAY_SHADER": ["play_shader_6","toggle_shaders"]
|
||||
},
|
||||
"q": {
|
||||
"DEFAULT": ["load_slot_7_into_next_player", "toggle_detour_mode"]
|
||||
"DEFAULT": ["load_slot_7_into_next_player", "toggle_detour_mode"],
|
||||
"PLAY_SHADER": ["play_shader_7","toggle_detour_mode"]
|
||||
},
|
||||
"r": {
|
||||
"DEFAULT": ["load_slot_8_into_next_player"]
|
||||
"DEFAULT": ["load_slot_8_into_next_player", "toggle_feedback"],
|
||||
"PLAY_SHADER": ["play_shader_8", "toggle_feedback"]
|
||||
},
|
||||
"s": {
|
||||
"DEFAULT": ["load_slot_9_into_next_player","confirm_shutdown"]
|
||||
}
|
||||
"DEFAULT": ["load_slot_9_into_next_player","confirm_shutdown"],
|
||||
"PLAY_SHADER": ["play_shader_9","confirm_shutdown"]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,173 +1,252 @@
|
||||
{
|
||||
"control_change 1": {
|
||||
"DEFAULT": ["set_the_shader_param_0_continuous"],
|
||||
"control_change 0": {
|
||||
"DEFAULT": ["set_the_shader_param_0_layer_offset_0_continuous"],
|
||||
"NAV_DETOUR": ["set_detour_mix_continuous"]
|
||||
},
|
||||
"control_change 2": {
|
||||
"DEFAULT": ["set_the_shader_param_1_continuous"],
|
||||
"control_change 1": {
|
||||
"DEFAULT": ["set_the_shader_param_1_layer_offset_0_continuous"],
|
||||
"NAV_DETOUR": ["set_detour_speed_position_continuous"]
|
||||
},
|
||||
"control_change 3": {
|
||||
"DEFAULT": ["set_the_shader_param_2_continuous"],
|
||||
"control_change 2": {
|
||||
"DEFAULT": ["set_the_shader_param_2_layer_offset_0_continuous"],
|
||||
"NAV_DETOUR": ["set_detour_start_continuous"]
|
||||
},
|
||||
"control_change 4": {
|
||||
"DEFAULT": ["set_the_shader_param_3_continuous"],
|
||||
"control_change 3": {
|
||||
"DEFAULT": ["set_the_shader_param_3_layer_offset_0_continuous"],
|
||||
"NAV_DETOUR": ["set_detour_end_continuous"]
|
||||
},
|
||||
"control_change 4": {
|
||||
"DEFAULT": ["set_the_shader_param_0_layer_offset_1_continuous"]
|
||||
},
|
||||
"control_change 5": {
|
||||
"DEFAULT": ["set_the_shader_param_0_continuous"]
|
||||
"DEFAULT": ["set_the_shader_param_1_layer_offset_1_continuous"]
|
||||
},
|
||||
"control_change 6": {
|
||||
"DEFAULT": ["set_the_shader_param_1_continuous"]
|
||||
"DEFAULT": ["set_the_shader_param_2_layer_offset_1_continuous"]
|
||||
},
|
||||
"control_change 7": {
|
||||
"DEFAULT": ["set_the_shader_param_2_continuous"]
|
||||
"DEFAULT": ["set_the_shader_param_3_layer_offset_1_continuous"]
|
||||
},
|
||||
"control_change 8": {
|
||||
"DEFAULT": ["set_the_shader_param_3_continuous"]
|
||||
"DEFAULT": ["set_the_shader_param_0_layer_offset_2_continuous"]
|
||||
},
|
||||
"control_change 74": {
|
||||
"DEFAULT": ["set_the_shader_param_0_continuous"]
|
||||
"control_change 9": {
|
||||
"DEFAULT": ["set_the_shader_param_1_layer_offset_2_continuous"]
|
||||
},
|
||||
"control_change 71": {
|
||||
"DEFAULT": ["set_the_shader_param_1_continuous"]
|
||||
"control_change 10": {
|
||||
"DEFAULT": ["set_the_shader_param_2_layer_offset_2_continuous"]
|
||||
},
|
||||
"control_change 76": {
|
||||
"DEFAULT": ["set_the_shader_param_2_continuous"]
|
||||
"control_change 11": {
|
||||
"DEFAULT": ["set_the_shader_param_3_layer_offset_2_continuous"]
|
||||
},
|
||||
"control_change 77": {
|
||||
"DEFAULT": ["set_the_shader_param_3_continuous"]
|
||||
"control_change 12": {
|
||||
"DEFAULT": ["set_strobe_amount_continuous"]
|
||||
},
|
||||
"note_on 72": {
|
||||
"NAV_BROWSER": ["move_browser_selection_up"],
|
||||
"PLAYER": ["seek_back_on_player"],
|
||||
"DEFAULT": ["seek_back_on_player", "decrease_seek_time"],
|
||||
"NAV_SETTINGS": ["move_settings_selection_up"],
|
||||
"LENGTH_SET": ["return_to_default_control_mode"]
|
||||
"NAV_SHADERS": ["move_shaders_selection_up"],
|
||||
"LENGTH_SET": ["return_to_default_control_mode"],
|
||||
"CONFIRM": ["return_to_default_control_mode"],
|
||||
"SHADER_PARAM": ["decrease_this_param", "decrease_shader_param"],
|
||||
"PLAY_SHADER": ["decrease_this_param", "decrease_shader_param"]
|
||||
},
|
||||
"note_on 73": {
|
||||
"NAV_BROWSER": ["move_browser_selection_down"],
|
||||
"PLAYER": ["seek_forward_on_player"],
|
||||
"DEFAULT": ["seek_forward_on_player", "increase_seek_time"],
|
||||
"NAV_SETTINGS": ["move_settings_selection_down"],
|
||||
"LENGTH_SET": ["return_to_default_control_mode"]
|
||||
"NAV_SHADERS": ["move_shaders_selection_down"],
|
||||
"LENGTH_SET": ["return_to_default_control_mode"],
|
||||
"CONFIRM": ["return_to_default_control_mode"],
|
||||
"SHADER_PARAM": ["increase_this_param", "increase_shader_param"],
|
||||
"PLAY_SHADER": ["increase_this_param", "increase_shader_param"]
|
||||
|
||||
},
|
||||
"note_on 74": {
|
||||
"NAV_BROWSER": ["enter_on_browser_selection"],
|
||||
"PLAYER": ["toggle_action_on_player","toggle_show_on_player"],
|
||||
"DEFAULT": ["toggle_action_on_player","toggle_show_on_player"],
|
||||
"NAV_SETTINGS": ["enter_on_settings_selection"],
|
||||
"LENGTH_SET": ["record_fixed_length"]
|
||||
"NAV_SHADERS": ["enter_on_shaders_selection", "map_on_shaders_selection"],
|
||||
"LENGTH_SET": ["record_fixed_length"],
|
||||
"SHADER_PARAM": ["return_to_default_control_mode"],
|
||||
"CONFIRM": ["perform_confirm_action"],
|
||||
"NAV_DETOUR": ["toggle_detour_play"],
|
||||
"PLAY_SHADER": ["toggle_shaders", "toggle_shader_speed"]
|
||||
},
|
||||
"note_on 75": {
|
||||
"DEFAULT": ["switch_to_next_player", "toggle_player_mode"]
|
||||
"DEFAULT": ["switch_to_next_player", "toggle_player_mode"],
|
||||
"NAV_DETOUR": ["toggle_detour_record", "toggle_detour_record_loop"]
|
||||
},
|
||||
"note_on 76": {
|
||||
"DEFAULT": ["set_playing_sample_start_to_current_duration", "clear_playing_sample_start_time"]
|
||||
"DEFAULT": ["set_playing_sample_start_to_current_duration", "clear_playing_sample_start_time"],
|
||||
"SHADER_PARAM": ["decrease_param_focus"],
|
||||
"PLAY_SHADER": ["decrease_param_focus"],
|
||||
"NAV_DETOUR": ["decrease_mix_shader"]
|
||||
},
|
||||
"note_on 77": {
|
||||
"DEFAULT": ["set_playing_sample_end_to_current_duration", "clear_playing_sample_end_time"]
|
||||
"DEFAULT": ["set_playing_sample_end_to_current_duration", "clear_playing_sample_end_time"],
|
||||
"SHADER_PARAM": ["increase_param_focus"],
|
||||
"PLAY_SHADER": ["increase_param_focus"],
|
||||
"NAV_DETOUR": ["increase_mix_shader"]
|
||||
},
|
||||
"note_on 78": {
|
||||
"DEFAULT": ["toggle_capture_preview", "toggle_capture_recording"]},
|
||||
"note_on 79": {
|
||||
"DEFAULT": ["cycle_display_mode"]
|
||||
"DEFAULT": ["cycle_display_mode", "cycle_display_mode_back"]
|
||||
},
|
||||
"note_on 80": {
|
||||
"DEFAULT": ["toggle_function"]
|
||||
},
|
||||
"note_on 81": {
|
||||
"DEFAULT": ["load_slot_0_into_next_player","previous_bank"]
|
||||
"DEFAULT": ["load_slot_0_into_next_player","previous_bank"],
|
||||
"PLAY_SHADER": ["play_shader_0","previous_shader_layer"],
|
||||
"NAV_SHADERS": ["play_shader_0","previous_shader_layer"],
|
||||
"NAV_DETOUR": ["switch_to_detour_0", "set_the_detour_mix_0"]
|
||||
},
|
||||
"note_on 82": {
|
||||
"DEFAULT": ["load_slot_1_into_next_player","next_bank"]
|
||||
"DEFAULT": ["load_slot_1_into_next_player","next_bank"],
|
||||
"PLAY_SHADER": ["play_shader_1","next_shader_layer"],
|
||||
"NAV_SHADERS": ["play_shader_1","next_shader_layer"],
|
||||
"NAV_DETOUR": ["switch_to_detour_1", "set_the_detour_mix_1"]
|
||||
},
|
||||
"note_on 83": {
|
||||
"DEFAULT": ["load_slot_2_into_next_player","clear_all_slots"]
|
||||
"DEFAULT": ["load_slot_2_into_next_player","clear_all_slots"],
|
||||
"PLAY_SHADER": ["play_shader_2","clear_shader_bank"],
|
||||
"NAV_SHADERS": ["play_shader_2","clear_shader_bank"],
|
||||
"NAV_DETOUR": ["switch_to_detour_2", "clear_this_detour"]
|
||||
},
|
||||
"note_on 84": {
|
||||
"DEFAULT": ["load_slot_3_into_next_player"]
|
||||
"DEFAULT": ["load_slot_3_into_next_player"],
|
||||
"PLAY_SHADER": ["play_shader_3"],
|
||||
"NAV_DETOUR": ["switch_to_detour_3"]
|
||||
},
|
||||
"note_on 85": {
|
||||
"DEFAULT": ["load_slot_4_into_next_player"]
|
||||
"DEFAULT": ["load_slot_4_into_next_player"],
|
||||
"PLAY_SHADER": ["play_shader_4"]
|
||||
},
|
||||
"note_on 86": {
|
||||
"DEFAULT": ["load_slot_5_into_next_player","toggle_screen_mirror"]
|
||||
"DEFAULT": ["load_slot_5_into_next_player","toggle_screen_mirror"],
|
||||
"PLAY_SHADER": ["play_shader_5", "toggle_screen_mirror"]
|
||||
},
|
||||
"note_on 87": {
|
||||
"DEFAULT": ["load_slot_6_into_next_player"]
|
||||
"DEFAULT": ["load_slot_6_into_next_player","toggle_shaders"],
|
||||
"PLAY_SHADER": ["play_shader_6","toggle_shaders"]
|
||||
},
|
||||
"note_on 88": {
|
||||
"DEFAULT": ["load_slot_7_into_next_player"]
|
||||
"DEFAULT": ["load_slot_7_into_next_player", "toggle_detour_mode"],
|
||||
"PLAY_SHADER": ["play_shader_7","toggle_detour_mode"]
|
||||
},
|
||||
"note_on 89": {
|
||||
"DEFAULT": ["load_slot_8_into_next_player"]
|
||||
"DEFAULT": ["load_slot_8_into_next_player", "toggle_feedback"],
|
||||
"PLAY_SHADER": ["play_shader_8", "toggle_feedback"]
|
||||
},
|
||||
"note_on 90": {
|
||||
"DEFAULT": ["load_slot_9_into_next_player","quit_the_program"]
|
||||
},
|
||||
"note_on 0": {
|
||||
"DEFAULT": ["load_slot_9_into_next_player","confirm_shutdown"],
|
||||
"PLAY_SHADER": ["play_shader_9","confirm_shutdown"]
|
||||
},
|
||||
"note_on 36": {
|
||||
"NAV_BROWSER": ["move_browser_selection_up"],
|
||||
"PLAYER": ["seek_back_on_player"],
|
||||
"DEFAULT": ["seek_back_on_player", "decrease_seek_time"],
|
||||
"NAV_SETTINGS": ["move_settings_selection_up"],
|
||||
"LENGTH_SET": ["return_to_default_control_mode"]
|
||||
},
|
||||
"note_on 36": {
|
||||
"NAV_BROWSER": ["move_browser_selection_down"],
|
||||
"PLAYER": ["seek_forward_on_player"],
|
||||
"NAV_SETTINGS": ["move_settings_selection_down"],
|
||||
"LENGTH_SET": ["return_to_default_control_mode"]
|
||||
"NAV_SHADERS": ["move_shaders_selection_up"],
|
||||
"LENGTH_SET": ["return_to_default_control_mode"],
|
||||
"CONFIRM": ["return_to_default_control_mode"],
|
||||
"SHADER_PARAM": ["decrease_this_param", "decrease_shader_param"],
|
||||
"PLAY_SHADER": ["decrease_this_param", "decrease_shader_param"]
|
||||
},
|
||||
"note_on 37": {
|
||||
"NAV_BROWSER": ["enter_on_browser_selection"],
|
||||
"PLAYER": ["toggle_action_on_player","toggle_show_on_player"],
|
||||
"NAV_SETTINGS": ["enter_on_settings_selection"],
|
||||
"LENGTH_SET": ["record_fixed_length"]
|
||||
"NAV_BROWSER": ["move_browser_selection_down"],
|
||||
"DEFAULT": ["seek_forward_on_player", "increase_seek_time"],
|
||||
"NAV_SETTINGS": ["move_settings_selection_down"],
|
||||
"NAV_SHADERS": ["move_shaders_selection_down"],
|
||||
"LENGTH_SET": ["return_to_default_control_mode"],
|
||||
"CONFIRM": ["return_to_default_control_mode"],
|
||||
"SHADER_PARAM": ["increase_this_param", "increase_shader_param"],
|
||||
"PLAY_SHADER": ["increase_this_param", "increase_shader_param"]
|
||||
|
||||
},
|
||||
"note_on 38": {
|
||||
"DEFAULT": ["switch_to_next_player", "toggle_player_mode"]
|
||||
"NAV_BROWSER": ["enter_on_browser_selection"],
|
||||
"DEFAULT": ["toggle_action_on_player","toggle_show_on_player"],
|
||||
"NAV_SETTINGS": ["enter_on_settings_selection"],
|
||||
"NAV_SHADERS": ["enter_on_shaders_selection", "map_on_shaders_selection"],
|
||||
"LENGTH_SET": ["record_fixed_length"],
|
||||
"SHADER_PARAM": ["return_to_default_control_mode"],
|
||||
"CONFIRM": ["perform_confirm_action"],
|
||||
"NAV_DETOUR": ["toggle_detour_play"],
|
||||
"PLAY_SHADER": ["toggle_shaders", "toggle_shader_speed"]
|
||||
},
|
||||
"note_on 39": {
|
||||
"DEFAULT": ["set_playing_sample_start_to_current_duration", "clear_playing_sample_start_time"]
|
||||
"DEFAULT": ["switch_to_next_player", "toggle_player_mode"],
|
||||
"NAV_DETOUR": ["toggle_detour_record", "toggle_detour_record_loop"]
|
||||
},
|
||||
"note_on 40": {
|
||||
"DEFAULT": ["set_playing_sample_end_to_current_duration", "clear_playing_sample_end_time"]
|
||||
"DEFAULT": ["set_playing_sample_start_to_current_duration", "clear_playing_sample_start_time"],
|
||||
"SHADER_PARAM": ["decrease_param_focus"],
|
||||
"PLAY_SHADER": ["decrease_param_focus"],
|
||||
"NAV_DETOUR": ["decrease_mix_shader"]
|
||||
},
|
||||
"note_on 41": {
|
||||
"DEFAULT": ["toggle_capture_preview", "toggle_capture_recording"]},
|
||||
"note_on 42": {
|
||||
"DEFAULT": ["cycle_display_mode"]
|
||||
"DEFAULT": ["set_playing_sample_end_to_current_duration", "clear_playing_sample_end_time"],
|
||||
"SHADER_PARAM": ["increase_param_focus"],
|
||||
"PLAY_SHADER": ["increase_param_focus"],
|
||||
"NAV_DETOUR": ["increase_mix_shader"]
|
||||
},
|
||||
"note_on 42": {
|
||||
"DEFAULT": ["toggle_capture_preview", "toggle_capture_recording"]},
|
||||
"note_on 43": {
|
||||
"DEFAULT": ["toggle_function"]
|
||||
"DEFAULT": ["cycle_display_mode", "cycle_display_mode_back"]
|
||||
},
|
||||
"note_on 44": {
|
||||
"DEFAULT": ["load_slot_0_into_next_player","previous_bank"]
|
||||
"DEFAULT": ["toggle_function"]
|
||||
},
|
||||
"note_on 45": {
|
||||
"DEFAULT": ["load_slot_1_into_next_player","next_bank"]
|
||||
"DEFAULT": ["load_slot_0_into_next_player","previous_bank"],
|
||||
"PLAY_SHADER": ["play_shader_0","previous_shader_layer"],
|
||||
"NAV_SHADERS": ["play_shader_0","previous_shader_layer"],
|
||||
"NAV_DETOUR": ["switch_to_detour_0", "set_the_detour_mix_0"]
|
||||
},
|
||||
"note_on 46": {
|
||||
"DEFAULT": ["load_slot_2_into_next_player","clear_all_slots"]
|
||||
"DEFAULT": ["load_slot_1_into_next_player","next_bank"],
|
||||
"PLAY_SHADER": ["play_shader_1","next_shader_layer"],
|
||||
"NAV_SHADERS": ["play_shader_1","next_shader_layer"],
|
||||
"NAV_DETOUR": ["switch_to_detour_1", "set_the_detour_mix_1"]
|
||||
},
|
||||
"note_on 47": {
|
||||
"DEFAULT": ["load_slot_3_into_next_player"]
|
||||
"DEFAULT": ["load_slot_2_into_next_player","clear_all_slots"],
|
||||
"PLAY_SHADER": ["play_shader_2","clear_shader_bank"],
|
||||
"NAV_SHADERS": ["play_shader_2","clear_shader_bank"],
|
||||
"NAV_DETOUR": ["switch_to_detour_2", "clear_this_detour"]
|
||||
},
|
||||
"note_on 48": {
|
||||
"DEFAULT": ["load_slot_4_into_next_player"]
|
||||
"DEFAULT": ["load_slot_3_into_next_player"],
|
||||
"PLAY_SHADER": ["play_shader_3"],
|
||||
"NAV_DETOUR": ["switch_to_detour_3"]
|
||||
},
|
||||
"note_on 49": {
|
||||
"DEFAULT": ["load_slot_5_into_next_player","toggle_screen_mirror"]
|
||||
"DEFAULT": ["load_slot_4_into_next_player"],
|
||||
"PLAY_SHADER": ["play_shader_4"]
|
||||
},
|
||||
"note_on 50": {
|
||||
"DEFAULT": ["load_slot_6_into_next_player"]
|
||||
"DEFAULT": ["load_slot_5_into_next_player","toggle_screen_mirror"],
|
||||
"PLAY_SHADER": ["play_shader_5", "toggle_screen_mirror"]
|
||||
},
|
||||
"note_on 51": {
|
||||
"DEFAULT": ["load_slot_7_into_next_player"]
|
||||
"DEFAULT": ["load_slot_6_into_next_player","toggle_shaders"],
|
||||
"PLAY_SHADER": ["play_shader_6","toggle_shaders"]
|
||||
},
|
||||
"note_on 52": {
|
||||
"DEFAULT": ["load_slot_8_into_next_player"]
|
||||
"DEFAULT": ["load_slot_7_into_next_player", "toggle_detour_mode"],
|
||||
"PLAY_SHADER": ["play_shader_7","toggle_detour_mode"]
|
||||
},
|
||||
"note_on 53": {
|
||||
"DEFAULT": ["load_slot_9_into_next_player","quit_the_program"]
|
||||
}
|
||||
"DEFAULT": ["load_slot_8_into_next_player", "toggle_feedback"],
|
||||
"PLAY_SHADER": ["play_shader_8", "toggle_feedback"]
|
||||
},
|
||||
"note_on 54": {
|
||||
"DEFAULT": ["load_slot_9_into_next_player","confirm_shutdown"],
|
||||
"PLAY_SHADER": ["play_shader_9","confirm_shutdown"]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -163,13 +163,46 @@
|
||||
},
|
||||
"shader": {
|
||||
"USE_SHADER": {
|
||||
"action": "update_capture_settings",
|
||||
"action": null,
|
||||
"options": [
|
||||
"enabled",
|
||||
"disabled"
|
||||
],
|
||||
"value": "enabled"
|
||||
},
|
||||
"USE_SHADER_BANK": {
|
||||
"action": null,
|
||||
"options": [
|
||||
"enabled",
|
||||
"disabled"
|
||||
],
|
||||
"value": "disabled"
|
||||
},
|
||||
"FIX_PARAM_OFFSET_LAYER": {
|
||||
"action": null,
|
||||
"options": [
|
||||
"enabled",
|
||||
"disabled"
|
||||
],
|
||||
"value": "disabled"
|
||||
},
|
||||
"STROBE_AMOUNT": {
|
||||
"action": null,
|
||||
"options": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9,
|
||||
10
|
||||
],
|
||||
"value": 0
|
||||
},
|
||||
"X3_AS_SPEED": {
|
||||
"action": null,
|
||||
"options": [
|
||||
@@ -366,7 +399,9 @@
|
||||
"action": "change_hdmi_settings",
|
||||
"options": [
|
||||
"preferred",
|
||||
"CEA 4 HDMI"
|
||||
"CEA 4 HDMI",
|
||||
"CEA 1 HDMI",
|
||||
"CEA 17 HDMI"
|
||||
],
|
||||
"value": "CEA 4 HDMI"
|
||||
},
|
||||
|
||||
193
json_objects/shader_bank_data.json
Normal file
193
json_objects/shader_bank_data.json
Normal file
@@ -0,0 +1,193 @@
|
||||
[
|
||||
[
|
||||
{
|
||||
"name": "add_mix.frag",
|
||||
"param_number": 4,
|
||||
"path": "/home/pi/r_e_c_u_r/Shaders/2-input/add_mix.frag",
|
||||
"shad_type": "-",
|
||||
"slot": 0
|
||||
},
|
||||
{
|
||||
"name": "luma_key.frag",
|
||||
"param_number": 4,
|
||||
"path": "/home/pi/r_e_c_u_r/Shaders/2-input/luma_key.frag",
|
||||
"shad_type": "-",
|
||||
"slot": 1
|
||||
},
|
||||
{
|
||||
"name": "blend_add.frag",
|
||||
"param_number": 4,
|
||||
"path": "/home/pi/r_e_c_u_r/Shaders/2-input/blend_add.frag",
|
||||
"shad_type": "-",
|
||||
"slot": 2
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"param_number": 4,
|
||||
"path": "",
|
||||
"shad_type": "-"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"param_number": 4,
|
||||
"path": "",
|
||||
"shad_type": "-"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"param_number": 4,
|
||||
"path": "",
|
||||
"shad_type": "-"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"param_number": 4,
|
||||
"path": "",
|
||||
"shad_type": "-"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"param_number": 4,
|
||||
"path": "",
|
||||
"shad_type": "-"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"param_number": 4,
|
||||
"path": "",
|
||||
"shad_type": "-"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"param_number": 4,
|
||||
"path": "",
|
||||
"shad_type": "-"
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"name": "hsv_control.frag",
|
||||
"param_number": 4,
|
||||
"path": "/home/pi/r_e_c_u_r/Shaders/1-input/hsv_control.frag",
|
||||
"shad_type": "-",
|
||||
"slot": 0
|
||||
},
|
||||
{
|
||||
"name": "hsv_control_fine.frag",
|
||||
"param_number": 4,
|
||||
"path": "/home/pi/r_e_c_u_r/Shaders/1-input/hsv_control_fine.frag",
|
||||
"shad_type": "-",
|
||||
"slot": 1
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"param_number": 4,
|
||||
"path": "",
|
||||
"shad_type": "-"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"param_number": 4,
|
||||
"path": "",
|
||||
"shad_type": "-"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"param_number": 4,
|
||||
"path": "",
|
||||
"shad_type": "-"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"param_number": 4,
|
||||
"path": "",
|
||||
"shad_type": "-"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"param_number": 4,
|
||||
"path": "",
|
||||
"shad_type": "-"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"param_number": 4,
|
||||
"path": "",
|
||||
"shad_type": "-"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"param_number": 4,
|
||||
"path": "",
|
||||
"shad_type": "-"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"param_number": 4,
|
||||
"path": "",
|
||||
"shad_type": "-"
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"name": "wobble.frag",
|
||||
"param_number": 4,
|
||||
"path": "/home/pi/r_e_c_u_r/Shaders/1-input/wobble.frag",
|
||||
"shad_type": "-"
|
||||
},
|
||||
{
|
||||
"name": "rotate.frag",
|
||||
"param_number": 4,
|
||||
"path": "/home/pi/r_e_c_u_r/Shaders/1-input/rotate.frag",
|
||||
"shad_type": "-"
|
||||
},
|
||||
{
|
||||
"name": "rotate_fine.frag",
|
||||
"param_number": 4,
|
||||
"path": "/home/pi/r_e_c_u_r/Shaders/1-input/rotate_fine.frag",
|
||||
"shad_type": "-"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"param_number": 4,
|
||||
"path": "",
|
||||
"shad_type": "-"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"param_number": 4,
|
||||
"path": "",
|
||||
"shad_type": "-"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"param_number": 4,
|
||||
"path": "",
|
||||
"shad_type": "-"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"param_number": 4,
|
||||
"path": "",
|
||||
"shad_type": "-"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"param_number": 4,
|
||||
"path": "",
|
||||
"shad_type": "-"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"param_number": 4,
|
||||
"path": "",
|
||||
"shad_type": "-"
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"param_number": 4,
|
||||
"path": "",
|
||||
"shad_type": "-"
|
||||
}
|
||||
]
|
||||
]
|
||||
@@ -20,7 +20,7 @@ class NumpadInput(object):
|
||||
def on_key_press(self, event):
|
||||
numpad = list(string.ascii_lowercase[0:19])
|
||||
|
||||
if event.char is '.':
|
||||
if event.char is '.' or event.char is 'z':
|
||||
self.actions.quit_the_program()
|
||||
if event.char is 's':
|
||||
event.char = self.on_0_key_press()
|
||||
|
||||
@@ -1,40 +1,39 @@
|
||||
import display_centre.menu as menu
|
||||
import os
|
||||
|
||||
|
||||
class Shaders(object):
|
||||
MENU_HEIGHT = 10
|
||||
EMPTY_SHADER = dict(name='none',is_shader=True,shad_type='-',param_number=0,path='-',shad_index=0)
|
||||
EMPTY_SHADER = dict(name='none',is_shader=True,shad_type='-',param_number=4,path='-')
|
||||
def __init__(self, root, osc_client, message_handler, data):
|
||||
self.root = root
|
||||
self.osc_client = osc_client
|
||||
self.message_handler = message_handler
|
||||
self.data = data
|
||||
self.shaders_menu = menu.ShadersMenu(self.data, self.message_handler, self.MENU_HEIGHT )
|
||||
self.selected_shader = self.EMPTY_SHADER
|
||||
self.focused_param = None
|
||||
self.selected_shader_list = [self.EMPTY_SHADER for i in range(3)]
|
||||
self.focused_param = 0
|
||||
self.shaders_menu_list = self.generate_shaders_list()
|
||||
if self.shaders_menu_list is not None:
|
||||
pass
|
||||
|
||||
self.selected_status = '-' ## going to try using symbols for this : '-' means empty, '▶' means running, '■' means not running, '!' means error
|
||||
self.selected_param_values = [0.0,0.0,0.0,0.0]
|
||||
self.selected_status_list = ['-','-','-'] ## going to try using symbols for this : '-' means empty, '▶' means running, '■' means not running, '!' means error
|
||||
self.selected_param_list = [[0.0,0.0,0.0,0.0] for i in range(3)]
|
||||
self.selected_speed_list = [1.0, 1.0, 1.0]
|
||||
#self.load_selected_shader()
|
||||
|
||||
def generate_shaders_list(self):
|
||||
shaders_menu_list = []
|
||||
raw_list = self.shaders_menu.generate_raw_shaders_list()
|
||||
shad_i = 0
|
||||
for line in raw_list:
|
||||
if line['is_shader']:
|
||||
stripped_name = line['name'].lstrip()
|
||||
has_path, path = self.get_path_for_shader(stripped_name)
|
||||
shad_type = self.determine_shader_type(path)
|
||||
parameter_number = self.determine_shader_parameter_number(path)
|
||||
#print('shader index is {}'.format(shad_i))
|
||||
shaders_menu_list.append(dict(name=line['name'],is_shader=True,shad_type=shad_type,param_number=parameter_number,path=path,shad_index=shad_i))
|
||||
shad_i = shad_i +1
|
||||
|
||||
shaders_menu_list.append(dict(name=line['name'],is_shader=True,shad_type=shad_type,param_number=parameter_number,path=path))
|
||||
|
||||
else:
|
||||
shaders_menu_list.append(dict(name=line['name'],is_shader=False,shad_type='',param_number=None,path=None,shad_index=None))
|
||||
shaders_menu_list.append(dict(name=line['name'],is_shader=False,shad_type='',param_number=None,path=None))
|
||||
return shaders_menu_list
|
||||
|
||||
|
||||
@@ -47,7 +46,7 @@ class Shaders(object):
|
||||
return False, ''
|
||||
|
||||
def determine_shader_type(self, path):
|
||||
with open(path, 'r') as selected_shader:
|
||||
with open(path, 'r', errors='ignore') as selected_shader:
|
||||
shader_text = selected_shader.read()
|
||||
if '//0-input' in shader_text:
|
||||
return '0in'
|
||||
@@ -55,10 +54,10 @@ class Shaders(object):
|
||||
return '1in'
|
||||
elif '//2-input' in shader_text:
|
||||
return '2in'
|
||||
|
||||
else:
|
||||
return '-'
|
||||
|
||||
|
||||
def determine_shader_parameter_number(self, path):
|
||||
max_amount = 4
|
||||
if True: # for now always assume 4 params
|
||||
@@ -71,46 +70,75 @@ class Shaders(object):
|
||||
return max_amount
|
||||
|
||||
def load_selected_shader(self):
|
||||
self.selected_param_values = [0.0,0.0,0.0,0.0]
|
||||
self.osc_client.send_message("/shader/load", [self.selected_shader['path'],self.selected_shader['shad_type'] == '2in',self.selected_shader['param_number']])
|
||||
if not self.selected_status == '▶':
|
||||
self.selected_status = '■'
|
||||
selected_shader = self.selected_shader_list[self.data.shader_layer]
|
||||
#self.selected_param_list[self.data.shader_layer] = [0.0,0.0,0.0,0.0]
|
||||
print("select shader: ", selected_shader)
|
||||
self.osc_client.send_message("/shader/{}/load".format(str(self.data.shader_layer)), [selected_shader['path'],selected_shader['shad_type'] == '2in',selected_shader['param_number']])
|
||||
if not self.selected_status_list[self.data.shader_layer] == '▶':
|
||||
self.selected_status_list[self.data.shader_layer] = '■'
|
||||
|
||||
def start_selected_shader(self):
|
||||
self.osc_client.send_message("/shader/start", True)
|
||||
self.selected_status = '▶'
|
||||
self.osc_client.send_message("/shader/{}/is_active".format(str(self.data.shader_layer)), True)
|
||||
self.selected_status_list[self.data.shader_layer] = '▶'
|
||||
|
||||
def stop_selected_shader(self):
|
||||
self.osc_client.send_message("/shader/stop", True)
|
||||
self.selected_status = '■'
|
||||
self.osc_client.send_message("/shader/{}/is_active".format(str(self.data.shader_layer)), False)
|
||||
self.selected_status_list[self.data.shader_layer] = '■'
|
||||
|
||||
def map_on_shaders_selection(self):
|
||||
index = self.shaders_menu.selected_list_index
|
||||
is_file, name = self.shaders_menu.extract_file_type_and_name_from_menu_format(
|
||||
self.shaders_menu_list[index]['name'])
|
||||
if is_file:
|
||||
is_successful = self.data.create_new_shader_mapping_in_first_open(name)
|
||||
if not is_successful:
|
||||
self.message_handler.set_message('INFO', 'current bank is full')
|
||||
else:
|
||||
self.message_handler.set_message('INFO', 'can not map folder')
|
||||
|
||||
def enter_on_shaders_selection(self):
|
||||
selected_shader = self.selected_shader_list[self.data.shader_layer]
|
||||
index = self.shaders_menu.selected_list_index
|
||||
is_file, name = self.shaders_menu.extract_file_type_and_name_from_menu_format(
|
||||
self.shaders_menu_list[index]['name'])
|
||||
is_selected_shader = False
|
||||
if is_file and name == self.selected_shader['name'].lstrip():
|
||||
if is_file and name == selected_shader['name'].lstrip():
|
||||
is_selected_shader = True
|
||||
elif is_file:
|
||||
self.selected_shader = self.shaders_menu_list[index]
|
||||
self.selected_shader_list[self.data.shader_layer] = self.shaders_menu_list[index]
|
||||
self.load_selected_shader()
|
||||
else:
|
||||
self.shaders_menu.update_open_folders(name)
|
||||
self.shaders_menu_list = self.generate_shaders_list()
|
||||
return is_file, is_selected_shader, self.selected_shader
|
||||
return is_file, is_selected_shader, selected_shader
|
||||
|
||||
def play_this_shader(self, slot):
|
||||
print(self.data.shader_bank_data[self.data.shader_layer])
|
||||
if self.data.shader_bank_data[self.data.shader_layer][slot]['path']:
|
||||
self.selected_shader_list[self.data.shader_layer] = self.data.shader_bank_data[self.data.shader_layer][slot]
|
||||
self.selected_shader_list[self.data.shader_layer]['slot'] = slot
|
||||
self.load_selected_shader()
|
||||
else:
|
||||
self.message_handler.set_message('INFO', 'this slot is empty')
|
||||
|
||||
def increase_this_param(self, amount_change):
|
||||
param = self.focused_param
|
||||
current_amount = self.selected_param_values[param]
|
||||
current_amount = self.selected_param_list[self.data.shader_layer][param]
|
||||
amount = self.get_new_param_amount(current_amount,amount_change)
|
||||
self.set_param_to_amount(param, amount)
|
||||
|
||||
def decrease_this_param(self, amount_change):
|
||||
param = self.focused_param
|
||||
current_amount = self.selected_param_values[param]
|
||||
current_amount = self.selected_param_list[self.data.shader_layer][param]
|
||||
amount = self.get_new_param_amount(current_amount,-amount_change)
|
||||
self.set_param_to_amount(param, amount)
|
||||
|
||||
def toggle_shader_speed(self):
|
||||
if self.selected_speed_list[self.data.shader_layer] > 0.62:
|
||||
self.set_speed_to_amount(0.5)
|
||||
else:
|
||||
self.set_speed_to_amount(0.75)
|
||||
|
||||
@staticmethod
|
||||
def get_new_param_amount(current, change):
|
||||
if current + change > 1:
|
||||
@@ -120,10 +148,23 @@ class Shaders(object):
|
||||
else:
|
||||
return current + change
|
||||
|
||||
def set_param_to_amount(self, param, amount):
|
||||
def set_param_to_amount(self, param, amount, layer_offset=None):
|
||||
start_layer = self.data.shader_layer
|
||||
if self.data.settings['shader']['FIX_PARAM_OFFSET_LAYER']['value'] == 'enabled':
|
||||
start_layer = 0
|
||||
if layer_offset is None:
|
||||
start_layer = self.data.shader_layer
|
||||
layer_offset = 0
|
||||
layer = start_layer + layer_offset % 4
|
||||
if self.data.settings['shader']['X3_AS_SPEED']['value'] == 'enabled' and param == 3:
|
||||
self.osc_client.send_message("/shader/speed", [param, amount] )
|
||||
self.set_speed_to_amount(amount, layout_offset=layout_offset)
|
||||
else:
|
||||
self.osc_client.send_message("/shader/param", [param, amount] )
|
||||
self.selected_param_values[param] = amount
|
||||
|
||||
self.osc_client.send_message("/shader/{}/param".format(str(layer)), [param, amount] )
|
||||
self.selected_param_list[layer][param] = amount
|
||||
|
||||
def set_speed_to_amount(self, amount, layer_offset=0):
|
||||
layer = self.data.shader_layer + layer_offset % 4
|
||||
self.osc_client.send_message("/shader/{}/speed".format(str(layer)), amount )
|
||||
self.selected_speed_list[layer] = amount
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user