Merge branch 'feature_plugins' of https://github.com/langolierz/r_e_c_u_r into feature_plugins

This commit is contained in:
langolierz
2020-03-15 18:00:50 +00:00
12 changed files with 548 additions and 198 deletions

View File

@@ -1,6 +1,6 @@
# Auto-generated Actions list
Tue 10 Mar 23:48:45 UTC 2020
Sat 14 Mar 23:19:42 UTC 2020
for branch=feature_plugins

View File

@@ -2,153 +2,282 @@
| Note/CC | Mode | Action (default) | Action (with FN) |
| --- | --- | --- | --- |
| control_change 0 | NAV_DETOUR | set_detour_mix_continuous | |
| control_change 0 | NAV_LFO | set_lfo_modulation_0_level | |
| control_change 0 | NAV_SND | sound_set_config_energy_gain | |
| control_change 0 | NAV_MANI | set_variable_A | |
| control_change 0 | DEFAULT | set_the_shader_param_0_layer_offset_0_continuous | set_strobe_amount_continuous | |
| control_change 1 | NAV_DETOUR | set_detour_speed_position_continuous | |
| control_change 0 | NAV_LPRC | set_automation_speed | |
| control_change 0 | NAV_WJMX | wj_set_position_N:x | |
| control_change 0 | NAV_DETOUR | set_detour_speed_position_continuous | |
| control_change 1 | NAV_SND | sound_set_config_energy_threshold | |
| control_change 1 | NAV_WJMX | wj_set_position_N:y | |
| control_change 1 | NAV_MANI | f:sin(x*pi):|set_variable_SIN | |
| control_change 1 | NAV_LFO | set_lfo_modulation_1_level | |
| control_change 1 | DEFAULT | set_the_shader_param_1_layer_offset_0_continuous | set_shader_speed_layer_0_amount | |
| control_change 1 | NAV_DETOUR | set_detour_start_continuous | |
| control_change 10 | DEFAULT | set_the_shader_param_2_layer_offset_2_continuous | |
| control_change 11 | DEFAULT | set_the_shader_param_3_layer_offset_2_continuous | |
| control_change 12 | DEFAULT | set_strobe_amount_continuous | |
| control_change 2 | NAV_DETOUR | set_detour_start_continuous | |
| control_change 16 | DEFAULT | set_the_shader_param_0_layer_offset_2_continuous | |
| control_change 17 | DEFAULT | set_the_shader_param_1_layer_offset_2_continuous | |
| control_change 18 | DEFAULT | set_the_shader_param_2_layer_offset_2_continuous | |
| control_change 19 | DEFAULT | set_the_shader_param_3_layer_offset_2_continuous | |
| control_change 2 | NAV_LFO | set_lfo_modulation_2_level | |
| control_change 2 | DEFAULT | set_the_shader_param_2_layer_offset_0_continuous | set_shader_speed_layer_1_amount | |
| control_change 3 | NAV_DETOUR | set_detour_end_continuous | |
| control_change 2 | NAV_WJMX | wj_set_colour_T:x | |
| control_change 2 | NAV_DETOUR | set_detour_end_continuous | |
| control_change 20 | DEFAULT | set_strobe_amount_continuous | |
| control_change 3 | NAV_LFO | set_lfo_modulation_3_level | |
| control_change 3 | DEFAULT | set_the_shader_param_3_layer_offset_0_continuous | set_shader_speed_layer_2_amount | |
| control_change 4 | DEFAULT | set_the_shader_param_0_layer_offset_1_continuous | |
| control_change 5 | DEFAULT | set_the_shader_param_1_layer_offset_1_continuous | |
| control_change 6 | DEFAULT | set_the_shader_param_2_layer_offset_1_continuous | |
| control_change 7 | DEFAULT | set_the_shader_param_3_layer_offset_1_continuous | |
| control_change 3 | NAV_WJMX | wj_set_colour_T:y | |
| control_change 32 | NAV_SHADERS | play_shader_0 | previous_shader_layer | |
| control_change 32 | DEFAULT | load_slot_0_into_next_player | previous_bank | |
| control_change 32 | PLAY_SHADER | play_shader_0 | previous_shader_layer | |
| control_change 32 | NAV_DETOUR | switch_to_detour_0 | set_the_detour_mix_0 | |
| control_change 33 | NAV_SHADERS | play_shader_1 | next_shader_layer | |
| control_change 33 | DEFAULT | load_slot_1_into_next_player | next_bank | |
| control_change 33 | PLAY_SHADER | play_shader_1 | next_shader_layer | |
| control_change 33 | NAV_DETOUR | switch_to_detour_1 | set_the_detour_mix_1 | |
| control_change 34 | NAV_SHADERS | play_shader_2 | clear_shader_bank | |
| control_change 34 | DEFAULT | load_slot_2_into_next_player | clear_all_slots | |
| control_change 34 | PLAY_SHADER | play_shader_2 | clear_shader_bank | |
| control_change 34 | NAV_DETOUR | switch_to_detour_2 | clear_this_detour | |
| control_change 35 | DEFAULT | load_slot_3_into_next_player | |
| control_change 35 | PLAY_SHADER | play_shader_3 | |
| control_change 35 | NAV_DETOUR | switch_to_detour_3 | |
| control_change 36 | DEFAULT | load_slot_4_into_next_player | |
| control_change 36 | PLAY_SHADER | play_shader_4 | |
| control_change 37 | DEFAULT | load_slot_5_into_next_player | toggle_screen_mirror | |
| control_change 37 | PLAY_SHADER | play_shader_5 | toggle_screen_mirror | |
| control_change 38 | DEFAULT | load_slot_6_into_next_player | toggle_shaders | |
| control_change 38 | PLAY_SHADER | play_shader_6 | toggle_shaders | |
| control_change 39 | DEFAULT | load_slot_7_into_next_player | toggle_detour_mode | |
| control_change 39 | PLAY_SHADER | play_shader_7 | toggle_detour_mode | |
| control_change 4 | NAV_LFO | set_lfo_speed | |
| control_change 4 | DEFAULT | set_the_shader_param_0_layer_offset_1_continuous | set_param_0_layer_offset_0_modulation_level_continuous | |
| control_change 4 | NAV_SND | sound_set_modulation_energy_slot_0_level | |
| control_change 4 | NAV_WJMX | wj_set_mix | wj_set_current_modulation_slot_0_level | |
| control_change 41 | DEFAULT | switch_to_next_player | toggle_player_mode | |
| control_change 41 | NAV_DETOUR | toggle_detour_record | toggle_detour_record_loop | |
| control_change 42 | NAV_SHADERS | enter_on_shaders_selection | map_on_shaders_selection | |
| control_change 42 | PLAY_SHADER | toggle_shaders | toggle_shader_speed | |
| control_change 42 | NAV_SETTINGS | enter_on_settings_selection | |
| control_change 42 | CONFIRM | perform_confirm_action | |
| control_change 42 | DEFAULT | toggle_action_on_player | toggle_show_on_player | |
| control_change 42 | SHADER_PARAM | return_to_default_control_mode | |
| control_change 42 | NAV_BROWSER | enter_on_browser_selection | |
| control_change 42 | LENGTH_SET | record_fixed_length | |
| control_change 42 | NAV_DETOUR | toggle_detour_play | |
| control_change 43 | NAV_SHADERS | move_shaders_selection_up | move_shaders_selection_page_up | |
| control_change 43 | SHADER_PARAM | decrease_this_param | decrease_shader_param | |
| control_change 43 | NAV_SETTINGS | move_settings_selection_up | move_settings_selection_page_up | |
| control_change 43 | PLAY_SHADER | decrease_this_param | decrease_shader_param | |
| control_change 43 | CONFIRM | return_to_default_control_mode | |
| control_change 43 | DEFAULT | seek_back_on_player | decrease_seek_time | |
| control_change 43 | NAV_PLUGINS | enter_on_plugins_selection | |
| control_change 43 | NAV_BROWSER | move_browser_selection_up | move_browser_selection_page_up | |
| control_change 43 | LENGTH_SET | return_to_default_control_mode | |
| control_change 44 | NAV_SHADERS | move_shaders_selection_down | move_shaders_selection_page_down | |
| control_change 44 | PLAY_SHADER | increase_this_param | increase_shader_param | |
| control_change 44 | NAV_SETTINGS | move_settings_selection_down | move_settings_selection_page_down | |
| control_change 44 | CONFIRM | return_to_default_control_mode | |
| control_change 44 | DEFAULT | seek_forward_on_player | increase_seek_time | |
| control_change 44 | SHADER_PARAM | increase_this_param | increase_shader_param | |
| control_change 44 | NAV_BROWSER | move_browser_selection_down | move_browser_selection_page_down | |
| control_change 44 | LENGTH_SET | return_to_default_control_mode | |
| control_change 45 | DEFAULT | toggle_capture_preview | toggle_capture_recording | |
| control_change 46 | DEFAULT | cycle_display_mode | cycle_display_mode_back | |
| control_change 48 | DEFAULT | load_slot_8_into_next_player | toggle_feedback | |
| control_change 48 | PLAY_SHADER | play_shader_8 | toggle_feedback | |
| control_change 49 | DEFAULT | load_slot_9_into_next_player | confirm_shutdown | |
| control_change 49 | PLAY_SHADER | play_shader_9 | confirm_shutdown | |
| control_change 5 | DEFAULT | set_the_shader_param_1_layer_offset_1_continuous | set_param_1_layer_offset_0_modulation_level_continuous | |
| control_change 5 | NAV_SND | sound_set_modulation_energy_slot_1_level | |
| control_change 5 | NAV_WJMX | wj_set_back_colour:h | wj_set_current_modulation_slot_1_level | |
| control_change 51 | DEFAULT | toggle_x3_as_speed | |
| control_change 52 | DEFAULT | toggle_feedback | |
| control_change 53 | DEFAULT | toggle_shader_layer_0 | |
| control_change 54 | DEFAULT | toggle_shader_layer_1 | |
| control_change 55 | DEFAULT | toggle_shader_layer_2 | |
| control_change 58 | NAV_SHADERS | move_shaders_selection_up | move_shaders_selection_page_up | |
| control_change 58 | SHADER_PARAM | decrease_this_param | decrease_shader_param | |
| control_change 58 | NAV_SETTINGS | move_settings_selection_up | move_settings_selection_page_up | |
| control_change 58 | PLAY_SHADER | decrease_this_param | decrease_shader_param | |
| control_change 58 | CONFIRM | return_to_default_control_mode | |
| control_change 58 | DEFAULT | seek_back_on_player | decrease_seek_time | |
| control_change 58 | NAV_PLUGINS | move_plugins_selection_up | move_plugins_selection_page_up | |
| control_change 58 | NAV_BROWSER | move_browser_selection_up | move_browser_selection_page_up | |
| control_change 58 | LENGTH_SET | return_to_default_control_mode | |
| control_change 59 | NAV_SHADERS | move_shaders_selection_down | move_shaders_selection_page_down | |
| control_change 59 | SHADER_PARAM | increase_this_param | increase_shader_param | |
| control_change 59 | NAV_SETTINGS | move_settings_selection_down | move_settings_selection_page_down | |
| control_change 59 | PLAY_SHADER | increase_this_param | increase_shader_param | |
| control_change 59 | CONFIRM | return_to_default_control_mode | |
| control_change 59 | DEFAULT | seek_forward_on_player | increase_seek_time | |
| control_change 59 | NAV_PLUGINS | move_plugins_selection_down | move_plugins_selection_page_down | |
| control_change 59 | NAV_BROWSER | move_browser_selection_down | move_browser_selection_page_down | |
| control_change 59 | LENGTH_SET | return_to_default_control_mode | |
| control_change 6 | DEFAULT | set_the_shader_param_2_layer_offset_1_continuous | set_param_2_layer_offset_0_modulation_level_continuous | |
| control_change 6 | NAV_SND | sound_set_modulation_energy_slot_2_level | |
| control_change 6 | NAV_WJMX | wj_set_back_colour:s | wj_set_current_modulation_slot_2_level | |
| control_change 60 | DEFAULT | toggle_function | |
| control_change 61 | DEFAULT | set_playing_sample_start_to_current_duration | clear_playing_sample_start_time | |
| control_change 61 | SHADER_PARAM | decrease_param_focus | |
| control_change 61 | PLAY_SHADER | decrease_param_focus | |
| control_change 61 | NAV_DETOUR | decrease_mix_shader | |
| control_change 62 | DEFAULT | set_playing_sample_end_to_current_duration | clear_playing_sample_end_time | |
| control_change 62 | SHADER_PARAM | increase_param_focus | |
| control_change 62 | PLAY_SHADER | increase_param_focus | |
| control_change 62 | NAV_DETOUR | increase_mix_shader | |
| control_change 64 | DEFAULT | play_shader_0 | |
| control_change 65 | DEFAULT | play_shader_1 | |
| control_change 66 | DEFAULT | play_shader_2 | |
| control_change 67 | DEFAULT | play_shader_3 | |
| control_change 68 | DEFAULT | play_shader_4 | |
| control_change 69 | DEFAULT | play_shader_5 | |
| control_change 7 | DEFAULT | set_the_shader_param_3_layer_offset_1_continuous | set_param_3_layer_offset_0_modulation_level_continuous | |
| control_change 7 | NAV_SND | sound_set_modulation_energy_slot_3_level | |
| control_change 7 | NAV_WJMX | wj_set_back_colour:v | wj_set_current_modulation_slot_3_level | |
| control_change 70 | DEFAULT | play_shader_6 | |
| control_change 71 | DEFAULT | play_shader_7 | |
| control_change 8 | DEFAULT | set_the_shader_param_0_layer_offset_2_continuous | |
| control_change 9 | DEFAULT | set_the_shader_param_1_layer_offset_2_continuous | |
| note_on 36 | LENGTH_SET | return_to_default_control_mode | |
| note_on 36 | CONFIRM | return_to_default_control_mode | |
| note_on 36 | NAV_BROWSER | move_browser_selection_up | |
| note_on 36 | NAV_SHADERS | move_shaders_selection_up | move_shaders_selection_page_up | |
| note_on 36 | SHADER_PARAM | decrease_this_param | decrease_shader_param | |
| note_on 36 | DEFAULT | seek_back_on_player | decrease_seek_time | |
| note_on 36 | NAV_SHADERS | move_shaders_selection_up | |
| note_on 36 | NAV_SETTINGS | move_settings_selection_up | move_settings_selection_page_up | |
| note_on 36 | PLAY_SHADER | decrease_this_param | decrease_shader_param | |
| note_on 36 | NAV_SETTINGS | move_settings_selection_up | |
| note_on 37 | LENGTH_SET | return_to_default_control_mode | |
| note_on 37 | CONFIRM | return_to_default_control_mode | |
| note_on 37 | NAV_BROWSER | move_browser_selection_down | |
| note_on 36 | CONFIRM | return_to_default_control_mode | |
| note_on 36 | DEFAULT | seek_back_on_player | decrease_seek_time | |
| note_on 36 | NAV_PLUGINS | move_plugins_selection_up | move_plugins_selection_page_up | |
| note_on 36 | NAV_BROWSER | move_browser_selection_up | move_browser_selection_page_up | |
| note_on 36 | LENGTH_SET | return_to_default_control_mode | |
| note_on 37 | NAV_SHADERS | move_shaders_selection_down | move_shaders_selection_page_down | |
| note_on 37 | SHADER_PARAM | increase_this_param | increase_shader_param | |
| note_on 37 | DEFAULT | seek_forward_on_player | increase_seek_time | |
| note_on 37 | NAV_SHADERS | move_shaders_selection_down | |
| note_on 37 | NAV_SETTINGS | move_settings_selection_down | move_settings_selection_page_down | |
| note_on 37 | PLAY_SHADER | increase_this_param | increase_shader_param | |
| note_on 37 | NAV_SETTINGS | move_settings_selection_down | |
| note_on 38 | LENGTH_SET | record_fixed_length | |
| note_on 38 | CONFIRM | perform_confirm_action | |
| note_on 38 | NAV_DETOUR | toggle_detour_play | |
| note_on 38 | NAV_BROWSER | enter_on_browser_selection | |
| note_on 38 | SHADER_PARAM | return_to_default_control_mode | |
| note_on 38 | DEFAULT | toggle_action_on_player | toggle_show_on_player | |
| note_on 37 | CONFIRM | return_to_default_control_mode | |
| note_on 37 | DEFAULT | seek_forward_on_player | increase_seek_time | |
| note_on 37 | NAV_PLUGINS | move_plugins_selection_down | move_plugins_selection_page_down | |
| note_on 37 | NAV_BROWSER | move_browser_selection_down | move_browser_selection_page_down | |
| note_on 37 | LENGTH_SET | return_to_default_control_mode | |
| note_on 38 | NAV_SHADERS | enter_on_shaders_selection | map_on_shaders_selection | |
| note_on 38 | PLAY_SHADER | toggle_shaders | toggle_shader_speed | |
| note_on 38 | SHADER_PARAM | return_to_default_control_mode | |
| note_on 38 | NAV_SETTINGS | enter_on_settings_selection | |
| note_on 39 | NAV_DETOUR | toggle_detour_record | toggle_detour_record_loop | |
| note_on 38 | PLAY_SHADER | toggle_shaders | toggle_shader_speed | |
| note_on 38 | CONFIRM | perform_confirm_action | |
| note_on 38 | DEFAULT | toggle_action_on_player | toggle_show_on_player | |
| note_on 38 | NAV_PLUGINS | enter_on_plugins_selection | |
| note_on 38 | NAV_BROWSER | enter_on_browser_selection | |
| note_on 38 | LENGTH_SET | record_fixed_length | |
| note_on 38 | NAV_DETOUR | toggle_detour_play | |
| note_on 39 | DEFAULT | switch_to_next_player | toggle_player_mode | |
| note_on 40 | SHADER_PARAM | decrease_param_focus | |
| note_on 40 | NAV_DETOUR | decrease_mix_shader | |
| note_on 40 | PLAY_SHADER | decrease_param_focus | |
| note_on 39 | NAV_DETOUR | toggle_detour_record | toggle_detour_record_loop | |
| note_on 40 | DEFAULT | set_playing_sample_start_to_current_duration | clear_playing_sample_start_time | |
| note_on 41 | SHADER_PARAM | increase_param_focus | |
| note_on 41 | NAV_DETOUR | increase_mix_shader | |
| note_on 41 | PLAY_SHADER | increase_param_focus | |
| note_on 40 | SHADER_PARAM | decrease_param_focus | |
| note_on 40 | PLAY_SHADER | decrease_param_focus | |
| note_on 40 | NAV_DETOUR | decrease_mix_shader | |
| note_on 41 | DEFAULT | set_playing_sample_end_to_current_duration | clear_playing_sample_end_time | |
| note_on 41 | SHADER_PARAM | increase_param_focus | |
| note_on 41 | PLAY_SHADER | increase_param_focus | |
| note_on 41 | NAV_DETOUR | increase_mix_shader | |
| note_on 42 | DEFAULT | toggle_capture_preview | toggle_capture_recording | |
| note_on 43 | DEFAULT | cycle_display_mode | cycle_display_mode_back | |
| note_on 44 | DEFAULT | toggle_function | |
| note_on 45 | NAV_SHADERS | play_shader_0 | previous_shader_layer | |
| note_on 45 | NAV_DETOUR | switch_to_detour_0 | set_the_detour_mix_0 | |
| note_on 45 | PLAY_SHADER | play_shader_0 | previous_shader_layer | |
| note_on 45 | DEFAULT | load_slot_0_into_next_player | previous_bank | |
| note_on 45 | PLAY_SHADER | play_shader_0 | previous_shader_layer | |
| note_on 45 | NAV_DETOUR | switch_to_detour_0 | set_the_detour_mix_0 | |
| note_on 46 | NAV_SHADERS | play_shader_1 | next_shader_layer | |
| note_on 46 | NAV_DETOUR | switch_to_detour_1 | set_the_detour_mix_1 | |
| note_on 46 | PLAY_SHADER | play_shader_1 | next_shader_layer | |
| note_on 46 | DEFAULT | load_slot_1_into_next_player | next_bank | |
| note_on 46 | PLAY_SHADER | play_shader_1 | next_shader_layer | |
| note_on 46 | NAV_DETOUR | switch_to_detour_1 | set_the_detour_mix_1 | |
| note_on 47 | NAV_SHADERS | play_shader_2 | clear_shader_bank | |
| note_on 47 | NAV_DETOUR | switch_to_detour_2 | clear_this_detour | |
| note_on 47 | PLAY_SHADER | play_shader_2 | clear_shader_bank | |
| note_on 47 | DEFAULT | load_slot_2_into_next_player | clear_all_slots | |
| note_on 48 | NAV_DETOUR | switch_to_detour_3 | |
| note_on 48 | PLAY_SHADER | play_shader_3 | |
| note_on 47 | PLAY_SHADER | play_shader_2 | clear_shader_bank | |
| note_on 47 | NAV_DETOUR | switch_to_detour_2 | clear_this_detour | |
| note_on 48 | DEFAULT | load_slot_3_into_next_player | |
| note_on 49 | PLAY_SHADER | play_shader_4 | |
| note_on 48 | PLAY_SHADER | play_shader_3 | |
| note_on 48 | NAV_DETOUR | switch_to_detour_3 | |
| note_on 49 | DEFAULT | load_slot_4_into_next_player | |
| note_on 50 | PLAY_SHADER | play_shader_5 | toggle_screen_mirror | |
| note_on 49 | PLAY_SHADER | play_shader_4 | |
| note_on 50 | DEFAULT | load_slot_5_into_next_player | toggle_screen_mirror | |
| note_on 51 | PLAY_SHADER | play_shader_6 | toggle_shaders | |
| note_on 50 | PLAY_SHADER | play_shader_5 | toggle_screen_mirror | |
| note_on 51 | DEFAULT | load_slot_6_into_next_player | toggle_shaders | |
| note_on 52 | PLAY_SHADER | play_shader_7 | toggle_detour_mode | |
| note_on 51 | PLAY_SHADER | play_shader_6 | toggle_shaders | |
| note_on 52 | DEFAULT | load_slot_7_into_next_player | toggle_detour_mode | |
| note_on 53 | PLAY_SHADER | play_shader_8 | toggle_feedback | |
| note_on 52 | PLAY_SHADER | play_shader_7 | toggle_detour_mode | |
| note_on 53 | DEFAULT | load_slot_8_into_next_player | toggle_feedback | |
| note_on 54 | PLAY_SHADER | play_shader_9 | confirm_shutdown | |
| note_on 53 | PLAY_SHADER | play_shader_8 | toggle_feedback | |
| note_on 54 | DEFAULT | load_slot_9_into_next_player | confirm_shutdown | |
| note_on 72 | LENGTH_SET | return_to_default_control_mode | |
| note_on 72 | CONFIRM | return_to_default_control_mode | |
| note_on 72 | NAV_BROWSER | move_browser_selection_up | |
| note_on 54 | PLAY_SHADER | play_shader_9 | confirm_shutdown | |
| note_on 72 | NAV_SHADERS | move_shaders_selection_up | move_shaders_selection_page_up | |
| note_on 72 | SHADER_PARAM | decrease_this_param | decrease_shader_param | |
| note_on 72 | DEFAULT | seek_back_on_player | decrease_seek_time | |
| note_on 72 | NAV_SHADERS | move_shaders_selection_up | |
| note_on 72 | NAV_SETTINGS | move_settings_selection_up | move_settings_selection_page_up | |
| note_on 72 | PLAY_SHADER | decrease_this_param | decrease_shader_param | |
| note_on 72 | NAV_SETTINGS | move_settings_selection_up | |
| note_on 73 | LENGTH_SET | return_to_default_control_mode | |
| note_on 73 | CONFIRM | return_to_default_control_mode | |
| note_on 73 | NAV_BROWSER | move_browser_selection_down | |
| note_on 72 | CONFIRM | return_to_default_control_mode | |
| note_on 72 | DEFAULT | seek_back_on_player | decrease_seek_time | |
| note_on 72 | NAV_PLUGINS | move_plugins_selection_up | move_plugins_selection_page_up | |
| note_on 72 | NAV_BROWSER | move_browser_selection_up | move_browser_selection_page_up | |
| note_on 72 | LENGTH_SET | return_to_default_control_mode | |
| note_on 73 | NAV_SHADERS | move_shaders_selection_down | move_shaders_selection_page_down | |
| note_on 73 | SHADER_PARAM | increase_this_param | increase_shader_param | |
| note_on 73 | DEFAULT | seek_forward_on_player | increase_seek_time | |
| note_on 73 | NAV_SHADERS | move_shaders_selection_down | |
| note_on 73 | NAV_SETTINGS | move_settings_selection_down | move_settings_selection_page_down | |
| note_on 73 | PLAY_SHADER | increase_this_param | increase_shader_param | |
| note_on 73 | NAV_SETTINGS | move_settings_selection_down | |
| note_on 74 | LENGTH_SET | record_fixed_length | |
| note_on 74 | CONFIRM | perform_confirm_action | |
| note_on 74 | NAV_DETOUR | toggle_detour_play | |
| note_on 74 | NAV_BROWSER | enter_on_browser_selection | |
| note_on 74 | SHADER_PARAM | return_to_default_control_mode | |
| note_on 74 | DEFAULT | toggle_action_on_player | toggle_show_on_player | |
| note_on 73 | CONFIRM | return_to_default_control_mode | |
| note_on 73 | DEFAULT | seek_forward_on_player | increase_seek_time | |
| note_on 73 | NAV_PLUGINS | move_plugins_selection_down | move_plugins_selection_page_down | |
| note_on 73 | NAV_BROWSER | move_browser_selection_down | move_browser_selection_page_down | |
| note_on 73 | LENGTH_SET | return_to_default_control_mode | |
| note_on 74 | NAV_SHADERS | enter_on_shaders_selection | map_on_shaders_selection | |
| note_on 74 | PLAY_SHADER | toggle_shaders | toggle_shader_speed | |
| note_on 74 | SHADER_PARAM | return_to_default_control_mode | |
| note_on 74 | NAV_SETTINGS | enter_on_settings_selection | |
| note_on 75 | NAV_DETOUR | toggle_detour_record | toggle_detour_record_loop | |
| note_on 74 | PLAY_SHADER | toggle_shaders | toggle_shader_speed | |
| note_on 74 | CONFIRM | perform_confirm_action | |
| note_on 74 | DEFAULT | toggle_action_on_player | toggle_show_on_player | |
| note_on 74 | NAV_PLUGINS | enter_on_plugins_selection | |
| note_on 74 | NAV_BROWSER | enter_on_browser_selection | |
| note_on 74 | LENGTH_SET | record_fixed_length | |
| note_on 74 | NAV_DETOUR | toggle_detour_play | |
| note_on 75 | DEFAULT | switch_to_next_player | toggle_player_mode | |
| note_on 76 | SHADER_PARAM | decrease_param_focus | |
| note_on 76 | NAV_DETOUR | decrease_mix_shader | |
| note_on 76 | PLAY_SHADER | decrease_param_focus | |
| note_on 75 | 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 | |
| note_on 77 | SHADER_PARAM | increase_param_focus | |
| note_on 77 | NAV_DETOUR | increase_mix_shader | |
| note_on 77 | PLAY_SHADER | increase_param_focus | |
| note_on 76 | SHADER_PARAM | decrease_param_focus | |
| note_on 76 | PLAY_SHADER | decrease_param_focus | |
| note_on 76 | NAV_DETOUR | decrease_mix_shader | |
| note_on 77 | DEFAULT | set_playing_sample_end_to_current_duration | clear_playing_sample_end_time | |
| note_on 77 | SHADER_PARAM | increase_param_focus | |
| note_on 77 | PLAY_SHADER | increase_param_focus | |
| note_on 77 | NAV_DETOUR | increase_mix_shader | |
| note_on 78 | DEFAULT | toggle_capture_preview | toggle_capture_recording | |
| note_on 79 | DEFAULT | cycle_display_mode | cycle_display_mode_back | |
| note_on 80 | DEFAULT | toggle_function | |
| note_on 81 | NAV_SHADERS | play_shader_0 | previous_shader_layer | |
| note_on 81 | NAV_DETOUR | switch_to_detour_0 | set_the_detour_mix_0 | |
| note_on 81 | PLAY_SHADER | play_shader_0 | previous_shader_layer | |
| note_on 81 | DEFAULT | load_slot_0_into_next_player | previous_bank | |
| note_on 81 | PLAY_SHADER | play_shader_0 | previous_shader_layer | |
| note_on 81 | NAV_DETOUR | switch_to_detour_0 | set_the_detour_mix_0 | |
| note_on 82 | NAV_SHADERS | play_shader_1 | next_shader_layer | |
| note_on 82 | NAV_DETOUR | switch_to_detour_1 | set_the_detour_mix_1 | |
| note_on 82 | PLAY_SHADER | play_shader_1 | next_shader_layer | |
| note_on 82 | DEFAULT | load_slot_1_into_next_player | next_bank | |
| note_on 82 | PLAY_SHADER | play_shader_1 | next_shader_layer | |
| note_on 82 | NAV_DETOUR | switch_to_detour_1 | set_the_detour_mix_1 | |
| note_on 83 | NAV_SHADERS | play_shader_2 | clear_shader_bank | |
| note_on 83 | NAV_DETOUR | switch_to_detour_2 | clear_this_detour | |
| note_on 83 | PLAY_SHADER | play_shader_2 | clear_shader_bank | |
| note_on 83 | DEFAULT | load_slot_2_into_next_player | clear_all_slots | |
| note_on 84 | NAV_DETOUR | switch_to_detour_3 | |
| note_on 84 | PLAY_SHADER | play_shader_3 | |
| note_on 83 | PLAY_SHADER | play_shader_2 | clear_shader_bank | |
| note_on 83 | NAV_DETOUR | switch_to_detour_2 | clear_this_detour | |
| note_on 84 | DEFAULT | load_slot_3_into_next_player | |
| note_on 85 | PLAY_SHADER | play_shader_4 | |
| note_on 84 | PLAY_SHADER | play_shader_3 | |
| note_on 84 | NAV_DETOUR | switch_to_detour_3 | |
| note_on 85 | DEFAULT | load_slot_4_into_next_player | |
| note_on 86 | PLAY_SHADER | play_shader_5 | toggle_screen_mirror | |
| note_on 85 | PLAY_SHADER | play_shader_4 | |
| note_on 86 | DEFAULT | load_slot_5_into_next_player | toggle_screen_mirror | |
| note_on 87 | PLAY_SHADER | play_shader_6 | toggle_shaders | |
| note_on 86 | PLAY_SHADER | play_shader_5 | toggle_screen_mirror | |
| note_on 87 | DEFAULT | load_slot_6_into_next_player | toggle_shaders | |
| note_on 88 | PLAY_SHADER | play_shader_7 | toggle_detour_mode | |
| note_on 87 | PLAY_SHADER | play_shader_6 | toggle_shaders | |
| note_on 88 | DEFAULT | load_slot_7_into_next_player | toggle_detour_mode | |
| note_on 89 | PLAY_SHADER | play_shader_8 | toggle_feedback | |
| note_on 88 | PLAY_SHADER | play_shader_7 | toggle_detour_mode | |
| note_on 89 | DEFAULT | load_slot_8_into_next_player | toggle_feedback | |
| note_on 90 | PLAY_SHADER | play_shader_9 | confirm_shutdown | |
| note_on 89 | PLAY_SHADER | play_shader_8 | toggle_feedback | |
| note_on 90 | DEFAULT | load_slot_9_into_next_player | confirm_shutdown | |
| note_on 90 | PLAY_SHADER | play_shader_9 | confirm_shutdown | |
----
@@ -159,80 +288,128 @@
| /high | DEFAULT | modulate_param_3_to_amount_continuous | |
| /himid | DEFAULT | modulate_param_2_to_amount_continuous | |
| /kick | DEFAULT | modulate_param_1_to_amount_continuous | |
| /shaderparam0 | NAV_DETOUR | set_detour_mix_continuous | |
| /shaderparam0 | DEFAULT | set_the_shader_param_0_layer_offset_0_continuous | |
| /shaderparam1 | NAV_DETOUR | set_detour_speed_position_continuous | |
| /shaderparam1 | DEFAULT | set_the_shader_param_1_layer_offset_0_continuous | |
| /shaderparam2 | NAV_DETOUR | set_detour_start_continuous | |
| /shaderparam2 | DEFAULT | set_the_shader_param_2_layer_offset_0_continuous | |
| /shaderparam3 | NAV_DETOUR | set_detour_end_continuous | |
| /shaderparam3 | DEFAULT | set_the_shader_param_3_layer_offset_0_continuous | |
| /shaderparam0 | NAV_LFO | set_lfo_modulation_0_level | |
| /shaderparam0 | NAV_SND | sound_set_config_energy_gain | |
| /shaderparam0 | NAV_MANI | set_variable_A | |
| /shaderparam0 | DEFAULT | set_the_shader_param_0_layer_offset_0_continuous | set_strobe_amount_continuous | |
| /shaderparam0 | NAV_LPRC | set_automation_speed | |
| /shaderparam0 | NAV_WJMX | wj_set_position_N:x | |
| /shaderparam0 | NAV_DETOUR | set_detour_speed_position_continuous | |
| /shaderparam04 | NAV_LFO | set_lfo_speed | |
| /shaderparam04 | DEFAULT | set_the_shader_param_0_layer_offset_1_continuous | set_param_0_layer_offset_0_modulation_level_continuous | |
| /shaderparam04 | NAV_SND | sound_set_modulation_energy_slot_0_level | |
| /shaderparam04 | NAV_WJMX | wj_set_mix | wj_set_current_modulation_slot_0_level | |
| /shaderparam1 | NAV_SND | sound_set_config_energy_threshold | |
| /shaderparam1 | NAV_WJMX | wj_set_position_N:y | |
| /shaderparam1 | NAV_MANI | f:sin(x*pi):|set_variable_SIN | |
| /shaderparam1 | NAV_LFO | set_lfo_modulation_1_level | |
| /shaderparam1 | DEFAULT | set_the_shader_param_1_layer_offset_0_continuous | set_shader_speed_layer_0_amount | |
| /shaderparam1 | NAV_DETOUR | set_detour_start_continuous | |
| /shaderparam10 | DEFAULT | set_the_shader_param_2_layer_offset_2_continuous | |
| /shaderparam11 | DEFAULT | set_the_shader_param_3_layer_offset_2_continuous | |
| /shaderparam12 | DEFAULT | set_strobe_amount_continuous | |
| /shaderparam2 | NAV_LFO | set_lfo_modulation_2_level | |
| /shaderparam2 | DEFAULT | set_the_shader_param_2_layer_offset_0_continuous | set_shader_speed_layer_1_amount | |
| /shaderparam2 | NAV_WJMX | wj_set_colour_T:x | |
| /shaderparam2 | NAV_DETOUR | set_detour_end_continuous | |
| /shaderparam3 | NAV_LFO | set_lfo_modulation_3_level | |
| /shaderparam3 | DEFAULT | set_the_shader_param_3_layer_offset_0_continuous | set_shader_speed_layer_2_amount | |
| /shaderparam3 | NAV_WJMX | wj_set_colour_T:y | |
| /shaderparam5 | DEFAULT | set_the_shader_param_1_layer_offset_1_continuous | set_param_1_layer_offset_0_modulation_level_continuous | |
| /shaderparam5 | NAV_SND | sound_set_modulation_energy_slot_1_level | |
| /shaderparam5 | NAV_WJMX | wj_set_back_colour:h | wj_set_current_modulation_slot_1_level | |
| /shaderparam6 | DEFAULT | set_the_shader_param_2_layer_offset_1_continuous | set_param_2_layer_offset_0_modulation_level_continuous | |
| /shaderparam6 | NAV_SND | sound_set_modulation_energy_slot_2_level | |
| /shaderparam6 | NAV_WJMX | wj_set_back_colour:s | wj_set_current_modulation_slot_2_level | |
| /shaderparam7 | DEFAULT | set_the_shader_param_3_layer_offset_1_continuous | set_param_3_layer_offset_0_modulation_level_continuous | |
| /shaderparam7 | NAV_SND | sound_set_modulation_energy_slot_3_level | |
| /shaderparam7 | NAV_WJMX | wj_set_back_colour:v | wj_set_current_modulation_slot_3_level | |
| /shaderparam8 | DEFAULT | set_the_shader_param_0_layer_offset_2_continuous | |
| /shaderparam9 | DEFAULT | set_the_shader_param_1_layer_offset_2_continuous | |
| /volume | DEFAULT | modulate_param_0_to_amount_continuous | |
| a | LENGTH_SET | return_to_default_control_mode | |
| a | CONFIRM | return_to_default_control_mode | |
| a | NAV_BROWSER | move_browser_selection_up | |
| a | NAV_SHADERS | move_shaders_selection_up | move_shaders_selection_page_up | |
| a | SHADER_PARAM | decrease_this_param | decrease_shader_param | |
| a | DEFAULT | seek_back_on_player | decrease_seek_time | |
| a | NAV_SHADERS | move_shaders_selection_up | |
| a | NAV_SETTINGS | move_settings_selection_up | move_settings_selection_page_up | |
| a | PLAY_SHADER | decrease_this_param | decrease_shader_param | |
| a | NAV_SETTINGS | move_settings_selection_up | |
| b | LENGTH_SET | return_to_default_control_mode | |
| b | CONFIRM | return_to_default_control_mode | |
| b | NAV_BROWSER | move_browser_selection_down | |
| a | CONFIRM | return_to_default_control_mode | |
| a | DEFAULT | seek_back_on_player | decrease_seek_time | |
| a | NAV_PLUGINS | move_plugins_selection_up | move_plugins_selection_page_up | |
| a | NAV_BROWSER | move_browser_selection_up | move_browser_selection_page_up | |
| a | LENGTH_SET | return_to_default_control_mode | |
| b | NAV_SHADERS | move_shaders_selection_down | move_shaders_selection_page_down | |
| b | SHADER_PARAM | increase_this_param | increase_shader_param | |
| b | DEFAULT | seek_forward_on_player | increase_seek_time | |
| b | NAV_SHADERS | move_shaders_selection_down | |
| b | NAV_SETTINGS | move_settings_selection_down | move_settings_selection_page_down | |
| b | PLAY_SHADER | increase_this_param | increase_shader_param | |
| b | NAV_SETTINGS | move_settings_selection_down | |
| c | LENGTH_SET | record_fixed_length | |
| c | CONFIRM | perform_confirm_action | |
| c | NAV_DETOUR | toggle_detour_play | |
| c | NAV_BROWSER | enter_on_browser_selection | |
| c | SHADER_PARAM | return_to_default_control_mode | |
| c | DEFAULT | toggle_action_on_player | toggle_show_on_player | |
| b | CONFIRM | return_to_default_control_mode | |
| b | DEFAULT | seek_forward_on_player | increase_seek_time | |
| b | NAV_PLUGINS | move_plugins_selection_down | move_plugins_selection_page_down | |
| b | NAV_BROWSER | move_browser_selection_down | move_browser_selection_page_down | |
| b | LENGTH_SET | return_to_default_control_mode | |
| c | NAV_SHADERS | enter_on_shaders_selection | map_on_shaders_selection | |
| c | PLAY_SHADER | toggle_shaders | toggle_shader_speed | |
| c | SHADER_PARAM | return_to_default_control_mode | |
| c | NAV_SETTINGS | enter_on_settings_selection | |
| d | NAV_DETOUR | toggle_detour_record | toggle_detour_record_loop | |
| c | PLAY_SHADER | toggle_shaders | toggle_shader_speed | |
| c | CONFIRM | perform_confirm_action | |
| c | DEFAULT | toggle_action_on_player | toggle_show_on_player | |
| c | NAV_PLUGINS | enter_on_plugins_selection | |
| c | NAV_BROWSER | enter_on_browser_selection | |
| c | LENGTH_SET | record_fixed_length | |
| c | NAV_DETOUR | toggle_detour_play | |
| d | DEFAULT | switch_to_next_player | toggle_player_mode | |
| e | SHADER_PARAM | decrease_param_focus | |
| e | NAV_DETOUR | decrease_mix_shader | |
| e | PLAY_SHADER | decrease_param_focus | |
| d | NAV_DETOUR | toggle_detour_record | toggle_detour_record_loop | |
| e | DEFAULT | set_playing_sample_start_to_current_duration | clear_playing_sample_start_time | |
| f | SHADER_PARAM | increase_param_focus | |
| f | NAV_DETOUR | increase_mix_shader | |
| f | PLAY_SHADER | increase_param_focus | |
| e | SHADER_PARAM | decrease_param_focus | |
| e | PLAY_SHADER | decrease_param_focus | |
| e | NAV_DETOUR | decrease_mix_shader | |
| f | DEFAULT | set_playing_sample_end_to_current_duration | clear_playing_sample_end_time | |
| f | SHADER_PARAM | increase_param_focus | |
| f | PLAY_SHADER | increase_param_focus | |
| f | NAV_DETOUR | increase_mix_shader | |
| feedback | DEFAULT | toggle_feedback | |
| g | DEFAULT | toggle_capture_preview | toggle_capture_recording | |
| h | DEFAULT | cycle_display_mode | cycle_display_mode_back | |
| i | DEFAULT | toggle_function | |
| j | NAV_SHADERS | play_shader_0 | previous_shader_layer | |
| j | NAV_DETOUR | switch_to_detour_0 | set_the_detour_mix_0 | |
| j | PLAY_SHADER | play_shader_0 | previous_shader_layer | |
| j | DEFAULT | load_slot_0_into_next_player | previous_bank | |
| j | PLAY_SHADER | play_shader_0 | previous_shader_layer | |
| j | NAV_DETOUR | switch_to_detour_0 | set_the_detour_mix_0 | |
| k | NAV_SHADERS | play_shader_1 | next_shader_layer | |
| k | NAV_DETOUR | switch_to_detour_1 | set_the_detour_mix_1 | |
| k | PLAY_SHADER | play_shader_1 | next_shader_layer | |
| k | DEFAULT | load_slot_1_into_next_player | next_bank | |
| k | PLAY_SHADER | play_shader_1 | next_shader_layer | |
| k | NAV_DETOUR | switch_to_detour_1 | set_the_detour_mix_1 | |
| l | NAV_SHADERS | play_shader_2 | clear_shader_bank | |
| l | NAV_DETOUR | switch_to_detour_2 | clear_this_detour | |
| l | PLAY_SHADER | play_shader_2 | clear_shader_bank | |
| l | DEFAULT | load_slot_2_into_next_player | clear_all_slots | |
| m | NAV_DETOUR | switch_to_detour_3 | |
| m | PLAY_SHADER | play_shader_3 | |
| l | PLAY_SHADER | play_shader_2 | clear_shader_bank | |
| l | NAV_DETOUR | switch_to_detour_2 | clear_this_detour | |
| m | DEFAULT | load_slot_3_into_next_player | |
| n | PLAY_SHADER | play_shader_4 | |
| m | PLAY_SHADER | play_shader_3 | |
| m | NAV_DETOUR | switch_to_detour_3 | |
| n | DEFAULT | load_slot_4_into_next_player | |
| o | PLAY_SHADER | play_shader_5 | toggle_screen_mirror | |
| n | PLAY_SHADER | play_shader_4 | |
| o | DEFAULT | load_slot_5_into_next_player | toggle_screen_mirror | |
| p | PLAY_SHADER | play_shader_6 | toggle_shaders | |
| o | PLAY_SHADER | play_shader_5 | toggle_screen_mirror | |
| p | DEFAULT | load_slot_6_into_next_player | toggle_shaders | |
| q | PLAY_SHADER | play_shader_7 | toggle_detour_mode | |
| p | PLAY_SHADER | play_shader_6 | toggle_shaders | |
| play_shader_0 | DEFAULT | play_shader_0 | |
| play_shader_1 | DEFAULT | play_shader_1 | |
| play_shader_2 | DEFAULT | play_shader_2 | |
| play_shader_3 | DEFAULT | play_shader_3 | |
| play_shader_4 | DEFAULT | play_shader_4 | |
| play_shader_5 | DEFAULT | play_shader_5 | |
| play_shader_6 | DEFAULT | play_shader_6 | |
| play_shader_7 | DEFAULT | play_shader_7 | |
| play_shader_8 | DEFAULT | play_shader_8 | |
| play_shader_9 | DEFAULT | play_shader_9 | |
| q | DEFAULT | load_slot_7_into_next_player | toggle_detour_mode | |
| r | PLAY_SHADER | play_shader_8 | toggle_feedback | |
| q | PLAY_SHADER | play_shader_7 | toggle_detour_mode | |
| r | DEFAULT | load_slot_8_into_next_player | toggle_feedback | |
| s | PLAY_SHADER | play_shader_9 | confirm_shutdown | |
| r | PLAY_SHADER | play_shader_8 | toggle_feedback | |
| s | DEFAULT | load_slot_9_into_next_player | confirm_shutdown | |
| s | PLAY_SHADER | play_shader_9 | confirm_shutdown | |
| shader_layer_0 | DEFAULT | toggle_shader_layer_0 | |
| shader_layer_1 | DEFAULT | toggle_shader_layer_1 | |
| shader_layer_2 | DEFAULT | toggle_shader_layer_2 | |
| toggle_x3 | DEFAULT | toggle_x3_as_speed | |
----
@@ -240,21 +417,46 @@
| Analogue input | Mode | Action (default) | Action (with FN) |
| --- | --- | --- | --- |
| 0 | NAV_DETOUR | set_detour_mix_continuous | |
| 0 | DEFAULT | set_the_shader_param_0_layer_offset_0_continuous | |
| 1 | NAV_DETOUR | set_detour_speed_position_continuous | |
| 1 | DEFAULT | set_the_shader_param_1_layer_offset_0_continuous | |
| 2 | NAV_DETOUR | set_detour_start_continuous | |
| 2 | DEFAULT | set_the_shader_param_2_layer_offset_0_continuous | |
| 3 | NAV_DETOUR | set_detour_end_continuous | |
| 3 | DEFAULT | set_the_shader_param_3_layer_offset_0_continuous | |
| 4 | NAV_DETOUR | set_detour_mix_continuous | |
| 4 | DEFAULT | set_the_shader_param_0_layer_offset_0_continuous | |
| 5 | NAV_DETOUR | set_detour_speed_position_continuous | |
| 5 | DEFAULT | set_the_shader_param_1_layer_offset_0_continuous | |
| 6 | NAV_DETOUR | set_detour_start_continuous | |
| 6 | DEFAULT | set_the_shader_param_2_layer_offset_0_continuous | |
| 7 | NAV_DETOUR | set_detour_end_continuous | |
| 7 | DEFAULT | set_the_shader_param_3_layer_offset_0_continuous | |
| 0 | NAV_LFO | set_lfo_modulation_0_level | |
| 0 | NAV_SND | sound_set_config_energy_gain | |
| 0 | NAV_MANI | set_variable_A | |
| 0 | DEFAULT | set_the_shader_param_0_layer_offset_0_continuous | set_strobe_amount_continuous | |
| 0 | NAV_LPRC | set_automation_speed | |
| 0 | NAV_WJMX | wj_set_position_N:x | |
| 0 | NAV_DETOUR | set_detour_speed_position_continuous | |
| 1 | NAV_SND | sound_set_config_energy_threshold | |
| 1 | NAV_WJMX | wj_set_position_N:y | |
| 1 | NAV_MANI | f:sin(x*pi):|set_variable_SIN | |
| 1 | NAV_LFO | set_lfo_modulation_1_level | |
| 1 | DEFAULT | set_the_shader_param_1_layer_offset_0_continuous | set_shader_speed_layer_0_amount | |
| 1 | NAV_DETOUR | set_detour_start_continuous | |
| 2 | NAV_LFO | set_lfo_modulation_2_level | |
| 2 | DEFAULT | set_the_shader_param_2_layer_offset_0_continuous | set_shader_speed_layer_1_amount | |
| 2 | NAV_WJMX | wj_set_colour_T:x | |
| 2 | NAV_DETOUR | set_detour_end_continuous | |
| 3 | NAV_LFO | set_lfo_modulation_3_level | |
| 3 | DEFAULT | set_the_shader_param_3_layer_offset_0_continuous | set_shader_speed_layer_2_amount | |
| 3 | NAV_WJMX | wj_set_colour_T:y | |
| 4 | NAV_LFO | set_lfo_modulation_0_level | |
| 4 | NAV_SND | sound_set_config_energy_gain | |
| 4 | NAV_MANI | set_variable_A | |
| 4 | DEFAULT | set_the_shader_param_0_layer_offset_0_continuous | set_strobe_amount_continuous | |
| 4 | NAV_LPRC | set_automation_speed | |
| 4 | NAV_WJMX | wj_set_position_N:x | |
| 4 | NAV_DETOUR | set_detour_speed_position_continuous | |
| 5 | NAV_SND | sound_set_config_energy_threshold | |
| 5 | NAV_WJMX | wj_set_position_N:y | |
| 5 | NAV_MANI | f:sin(x*pi):|set_variable_SIN | |
| 5 | NAV_LFO | set_lfo_modulation_1_level | |
| 5 | DEFAULT | set_the_shader_param_1_layer_offset_0_continuous | set_shader_speed_layer_0_amount | |
| 5 | NAV_DETOUR | set_detour_start_continuous | |
| 6 | NAV_LFO | set_lfo_modulation_2_level | |
| 6 | DEFAULT | set_the_shader_param_2_layer_offset_0_continuous | set_shader_speed_layer_1_amount | |
| 6 | NAV_WJMX | wj_set_colour_T:x | |
| 6 | NAV_DETOUR | set_detour_end_continuous | |
| 7 | NAV_LFO | set_lfo_modulation_3_level | |
| 7 | DEFAULT | set_the_shader_param_3_layer_offset_0_continuous | set_shader_speed_layer_2_amount | |
| 7 | NAV_WJMX | wj_set_colour_T:y | |
----

View File

@@ -468,7 +468,7 @@ class Data(object):
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['shader']['USE_SHADER_MOD']['value'] == 'enabled' and ["SHADERS",'NAV_SHADERS'] in display_modes:
display_modes.append(["SHDR_MOD","NAV_MOD"]) ## allow override, but fall back to PLAY_SHADER controls
display_modes.append(["SHDR_MOD",["NAV_MOD","PLAY_SHADER"]]) ## allow override, but fall back to PLAY_SHADER controls
if self.settings['detour']['TRY_DEMO']['value'] == 'enabled':
display_modes.append(["FRAMES",'NAV_DETOUR'])
if self.settings['system'].setdefault('USE_PLUGINS',

View File

@@ -225,6 +225,10 @@ class AutomationSourcePlugin(Plugin):
def recall_frame_data(self, data):
raise NotImplementedError
def get_frame_summary(self, data):
line = self.__class__.name + "%s: %s"%(self.__class__.name,data)
return line
# these frame stubs deal with the simplest case of a frame being a dict of values
# if its anything more complicated than that (like lists) then that will need to be
# handled in the plugin by overriding these methods
@@ -286,7 +290,7 @@ class AutomationSourcePlugin(Plugin):
# else,
# store as last value
print("WJSEND got pre-interpolated clip: %s" % [ f.f for f in frames if f is not None])
print("AutomationSourcePlugin[%s] got pre-interpolated clip: %s" % ( type(self), [ f.f for f in frames if f is not None]) )
#last = [ [None]*4, [None]*4, [None]*4 ]
last = {}
@@ -358,7 +362,7 @@ class AutomationSourcePlugin(Plugin):
process(self,findex,frame)
print("\nWJSEND got interpolated clip: %s" % [ f.f for f in frames if f is not None ])
print("\nAutomationSourcePlugin got interpolated clip: %s" % [ f.f for f in frames if f is not None ])
self.distance_cache = {}
@@ -482,6 +486,13 @@ class PluginCollection(object):
else:
return [c for c in self.plugins if include_disabled or not c.disabled]
def get_plugin_for_class_name(self, class_name):
for plugin in self.get_plugins():
#print("got class name %s" % type(plugin).__name__==class_name)
if type(plugin).__name__==class_name == class_name:
return plugin
return None
def walk_package(self, package):
"""Recursively walk the supplied package to retrieve all plugins
"""

View File

@@ -479,6 +479,12 @@ class Display(object):
g = '%s'%bar[int(value*(len(bar)-1))]
return g
def get_mod_slot_label(self, slot):
sl = 'ABCD'[slot]
if slot != self.shaders.selected_modulation_slot:
sl = sl.lower()
return sl
def get_speed_indicator(self, value, convert = True):
if convert:
value = (value * 2.0) - 1.0 # convert 0 to 1 to -1 to +1

6
dotfiles/profiler.sh Executable file
View File

@@ -0,0 +1,6 @@
#!/bin/bash
# launcher.sh
sleep 2
xmodmap ~/r_e_c_u_r/dotfiles/.remap &
python3 -m cProfile ~/r_e_c_u_r/r_e_c_u_r.py | tee profile.output

View File

@@ -9,7 +9,8 @@
"CONFIRM": ["return_to_default_control_mode"],
"SHADER_PARAM": ["decrease_this_param", "decrease_shader_param"],
"PLAY_SHADER": ["decrease_this_param", "decrease_shader_param"],
"NAV_WJMX": ["wj_select_previous_command"]
"NAV_WJMX": ["wj_select_previous_command"],
"NAV_MOD": ["previous_shader_layer"]
},
"b": {
"NAV_BROWSER": ["move_browser_selection_down", "move_browser_selection_page_down"],
@@ -21,7 +22,8 @@
"CONFIRM": ["return_to_default_control_mode"],
"SHADER_PARAM": ["increase_this_param", "increase_shader_param"],
"PLAY_SHADER": ["increase_this_param", "increase_shader_param"],
"NAV_WJMX": ["wj_select_next_command"]
"NAV_WJMX": ["wj_select_next_command"],
"NAV_MOD": ["next_shader_layer"]
},
"c": {
"NAV_BROWSER": ["enter_on_browser_selection"],

View File

@@ -13,7 +13,13 @@ class LFOModulationPlugin(ActionsPlugin,SequencePlugin,DisplayPlugin, Automation
active = False
# for keeping track of LFO levels
level = [0.0]*MAX_LFOS #, 0.0, 0.0, 0.0]
level = [0.0]*MAX_LFOS
speed = 0.5
# TODO: enable assigning of LFOs to mod slots
# with combination/averaging...
# needs UI to control it and [ [ 0.0 ] * 4 ] * 4 to handle the mappings?
# currently each LFO maps directly to mod slot
stop_flag = False
pause_flag = False
@@ -22,8 +28,9 @@ class LFOModulationPlugin(ActionsPlugin,SequencePlugin,DisplayPlugin, Automation
#self.PRESET_FILE_NAME = "ShaderLoopRecordPlugin/frames.json"
self.presets = self.load_presets()
self.level = self.presets.get('levels', [0.0]*self.MAX_LFOS)
self.level = self.presets.get('levels', [0.0]*self.MAX_LFOS).copy()
self.active = self.presets.get('active', False)
self.set_lfo_speed_direct(self.presets.get('speed', self.speed))
self.pc.shaders.root.after(1000, self.start_plugin)
@@ -42,7 +49,7 @@ class LFOModulationPlugin(ActionsPlugin,SequencePlugin,DisplayPlugin, Automation
def save_presets(self):
#for cmd,struct in self.commands.items():
# self.presets.setdefault('modulation_levels',{})[cmd] = struct.get('modulation',[{},{},{},{}])
self.pc.update_json(self.PRESET_FILE_NAME, { 'levels': self.level.copy(), 'active': self.active } )
self.pc.update_json(self.PRESET_FILE_NAME, { 'levels': self.level.copy(), 'active': self.active, 'speed': self.speed } )
# DisplayPlugin methods
def get_display_modes(self):
@@ -52,22 +59,24 @@ class LFOModulationPlugin(ActionsPlugin,SequencePlugin,DisplayPlugin, Automation
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, "LFOModulationPlugin ")
display.display_text.insert(END, "LFOModulation is ")
display.display_text.insert(END, "ACTIVE" if self.active else "not active")
display.display_text.insert(END, "\tSpeed: {:4.2f}% {}\n\n".format(self.speed*100, display.get_speed_indicator(self.speed/2.0, convert=False)))
display.display_text.insert(END, "\tSpeed: {:4.1f}% {}\n\n".format(self.speed*100, display.get_speed_indicator(self.speed/2.0, convert=False)))
for lfo,value in enumerate(self.level):
display.display_text.insert(END, "lfo {} level: {:4.2f}% {}\t".format(lfo,value*100,display.get_bar(value)))
display.display_text.insert(END, "{}\t{}\n".format(self.last_lfo_status[lfo], display.get_bar(self.last_lfo_value[lfo])))
display.display_text.insert(END, "\t%s\n" % self.formula[lfo])
display.display_text.insert(END, "\tslot %s\t%s\n" % (display.get_mod_slot_label(lfo), self.formula[lfo]))
display.display_text.insert(END, "\n")
# AutomationSourcePlugin methods
# methods/vars for AutomationSourcePlugin
# a lot of the nitty-gritty handled in parent class, these are for interfacing to the plugin
def get_frame_data(self):
diff = { 'levels': self.level, 'speed': self.speed }
diff = { 'levels': self.level.copy(), 'speed': self.speed, 'active': self.active }
#self.last_record = {}
#print(">>> reporting frame data for rec\n\t%s" % diff)
return diff
@@ -76,15 +85,28 @@ class LFOModulationPlugin(ActionsPlugin,SequencePlugin,DisplayPlugin, Automation
if data is None:
return
# print(">>>>recall from data:\n\t%s\n" %data)
"""for queue, item in data.items():
if item is not None:
self.send_buffered(queue, item[0], item[1], record = False)"""
if data.get('levels') is not None:
for slot,level in enumerate(data.get('levels')):
self.set_lfo_modulation_level(slot, level)
if data.get('active') is not None:
self.active = data.get('active')
if data.get('speed') is not None:
self.set_lfo_speed_direct(data.get('speed'))
def get_frame_summary(self, data):
line = ""
if data.get('levels') is not None:
line += "LFO levels ["
for i in range(4):
line += self.pc.display.get_bar(data['levels'][i])
line += "] "
if data.get('active') is not None:
line += "active " if data.get('active') else 'inactive '
if data.get('speed') is not None:
line += self.pc.display.get_speed_indicator(data.get('speed'))
#print ("returning %s from %s" %(line, data))
return line
# ActionsPlugin methods
@property
def parserlist(self):
@@ -163,6 +185,7 @@ class LFOModulationPlugin(ActionsPlugin,SequencePlugin,DisplayPlugin, Automation
return
for lfo in range(0,self.MAX_LFOS):
# TODO: this is where would use assignable amounts and average across multiple inputs
if self.level[lfo]>0.0:
self.pc.actions.call_method_name(
"modulate_param_%s_to_amount_continuous"%lfo,

View File

@@ -116,7 +116,7 @@ class SoundReactPlugin(ActionsPlugin,SequencePlugin,DisplayPlugin):
for sourcename in sorted(self.sources):
value = "{:8}:\t".format(sourcename)
for i,level in enumerate(self.levels[sourcename]):
g = "ABCD"[i]+'%s '%self.pc.display.get_bar(level)
g = self.pc.display.get_mod_slot_label(i)+'%s '%self.pc.display.get_bar(level)
value += g
value += "\t"
value += self.display_values.get(sourcename) or "{:4.2f}%".format(self.values.get(sourcename,0)*100) or "None"
@@ -164,7 +164,7 @@ class SoundReactPlugin(ActionsPlugin,SequencePlugin,DisplayPlugin):
config.setdefault('energy',{})['gain'] = 0.5 # how much to multiply signal by
config.setdefault('energy',{})['threshold'] = 0.5 # subtract from post-gain signal (hence ignore all values below)
config.setdefault('energy',{})['threshold'] = 0.5 # subtract from post-gain signal (hence ignore all values below this value)
GAIN_MULT = 1.0
def energy(self,data):
peak=np.average(np.abs(data))*2

View File

@@ -3,6 +3,48 @@ from serial import Serial
import data_centre.plugin_collection
from data_centre.plugin_collection import ActionsPlugin, SequencePlugin, DisplayPlugin, ModulationReceiverPlugin, AutomationSourcePlugin
import threading
import time
class AsyncWriter(threading.Thread):
queue = []
quit_flag = False
def __init__(self, plugin):
super().__init__()
self.plugin = plugin
def write(self, data):
self.queue.append(data)
def ready(self):
return len(self.queue)>0
def quit(self):
self.quit_flag = True
def run(self):
while not self.quit_flag:
#print("AsyncWriter looping..")
if not self.plugin.active or self.plugin.disabled:
#print("plugin active or disabled - exiting!")
return
if self.plugin.ser is None or not self.plugin.ser:
#print("no stream - skipping")
time.sleep(0.5)
continue
if not self.ready():
#print("not ready - skipping")
time.sleep(0.005)
continue
item = self.queue.pop(0)
if item is not None:
#print("sending %s" % item)
self.plugin.ser.write(item)
time.sleep(len(item)*0.005)
else:
time.sleep(0.01)
if len(self.queue)>4:
self.queue = self.queue[-4:4]
class WJSendPlugin(ActionsPlugin, SequencePlugin, DisplayPlugin, ModulationReceiverPlugin, AutomationSourcePlugin):
DEBUG = False #True
@@ -10,6 +52,8 @@ class WJSendPlugin(ActionsPlugin, SequencePlugin, DisplayPlugin, ModulationRecei
active = True
asyncwriter = None
sleep = 0.0
PRESET_FILE_NAME = "WJSendPlugin/presets.json"
@@ -23,7 +67,7 @@ class WJSendPlugin(ActionsPlugin, SequencePlugin, DisplayPlugin, ModulationRecei
rtscts=True, # TODO : test without this one
timeout=timeout)"""
THROTTLE = 10 # milliseconds to wait between refreshing parameters
THROTTLE = 20 # milliseconds to wait between refreshing parameters
selected_command_name = None
selected_argument_index = 0
@@ -39,7 +83,7 @@ class WJSendPlugin(ActionsPlugin, SequencePlugin, DisplayPlugin, ModulationRecei
print("read presets:\n%s\n" % self.presets)
# load the stored modulation levels into the current config
for cmd,levels in self.presets['modulation_levels'].items():
self.commands[cmd]['modulation'] = levels
self.commands[cmd]['modulation'] = levels.copy()
# build a reverse map of friendly name -> command struct for later use
for cmd,struct in self.commands.items():
@@ -63,6 +107,8 @@ class WJSendPlugin(ActionsPlugin, SequencePlugin, DisplayPlugin, ModulationRecei
def stop_plugin(self):
super().stop_plugin()
self.asyncwriter.quit()
self.asyncwriter = None
self.save_presets()
@@ -83,6 +129,12 @@ class WJSendPlugin(ActionsPlugin, SequencePlugin, DisplayPlugin, ModulationRecei
if item is not None:
self.send_buffered(queue, item[0], item[1], record = False)
def get_frame_summary(self, data):
line = "WJMX: "
for key, value in data.items():
line += key + ", "
print("returning line %s" % line)
return line
# methods for ModulationReceiverPlugin - receives changes to the in-built modulation levels (-1 to +1)
# experimental & hardcoded !
@@ -147,7 +199,7 @@ class WJSendPlugin(ActionsPlugin, SequencePlugin, DisplayPlugin, ModulationRecei
#if arg_name in mods:
v = mods.get(arg_name,0.0)
g = '%s'%self.pc.display.get_bar(v)
output += "{}:{}|".format('ABCD'[slot],g)
output += "{}:{}|".format(self.pc.display.get_mod_slot_label(slot),g)
if is_selected:
output+="]"
output += "\n"
@@ -184,6 +236,7 @@ class WJSendPlugin(ActionsPlugin, SequencePlugin, DisplayPlugin, ModulationRecei
import threading
serial_lock = threading.Lock()
def send_serial_string(self, string):
# TODO: thread this so can implement throttling and reduce bottleneck...
if not self.active:
return
try:
@@ -192,14 +245,18 @@ class WJSendPlugin(ActionsPlugin, SequencePlugin, DisplayPlugin, ModulationRecei
output = b'\2' + string.encode('ascii') + b'\3'
#with self.serial_lock:
#self.ser.write(b'\2\2\2\2\3\3\3\3')
self.ser.write(output) #.encode())
if self.asyncwriter is None:
self.asyncwriter = AsyncWriter(self)
self.asyncwriter.start()
self.asyncwriter.write(output)
#self.ser.write(output) #.encode())
# TODO: sleeping here seems to help serial response lag problem?
self.sleep = 0.2 #self.pc.get_variable('A')
"""self.sleep = 0.2 #self.pc.get_variable('A')
#print ("got sleep %s" % self.sleep)
if self.sleep>=0.1:
#print("using sleep %s" % self.sleep)
import time
time.sleep(self.sleep/10.0)
time.sleep(self.sleep/10.0)"""
#yield from self.ser.drain()
if self.DEBUG:
print("send_serial_string: sent string '%s'" % output) #.encode('ascii'))
@@ -220,7 +277,6 @@ class WJSendPlugin(ActionsPlugin, SequencePlugin, DisplayPlugin, ModulationRecei
# sorting the commands that are sent seems to fix jerk and lag that is otherwise pretty horrendous
with self.queue_lock:
for queue, command in sorted(self.queue.items()):
# TODO: modulate the parameters
self.send_buffered(queue, command[0], command[1])
#self.queue.clear()
except Exception:
@@ -294,6 +350,8 @@ class WJSendPlugin(ActionsPlugin, SequencePlugin, DisplayPlugin, ModulationRecei
def toggle_active(self):
self.active = not self.active
if not self.active:
self.asyncwriter = None
def reset_modulation_levels(self):
for cmd,struct in self.commands.items():

View File

@@ -83,25 +83,27 @@ class Frame:
count = 0
line = ""
for key,d in sorted(self.f.items()):
#print ("get_frame_summary: checking %s value %s" % (key,d))
if type(d) is dict and len(d)==0: # skip empty dicts
continue
if key in ["selected_shader","layer_active_status","shader_params","shader_speeds","selected_shader_slots"]:
# skip these as dealt with above
# skip these as dealt with below
pass
elif key in ['shader_modulation_levels']:
for layer in range(3):
o = ""
for slot in range(4):
sl = 'ABCD'[slot]
if slot != self.pc.shaders.selected_modulation_slot:
sl = sl.lower()
sl = self.pc.display.get_mod_slot_label(slot)
o+= sl + "["
for param in range(4):
o += self.pc.display.get_bar(d[layer][param][slot])
o+= "] "
summary.append("Shader layer %s: %s"%(layer,o))
elif key in ["WJSendPlugin"]:
# tends to be heavy so save it for later
# TODO: ask plugin to format the data for summary?
not_shown[key] = d
elif self.pc.get_plugin_for_class_name(key) is not None:
summary.append(self.pc.get_plugin_for_class_name(key).get_frame_summary(d))
"""elif key in ["WJSendPlugin"]:
# for things that tend to be heavy so dont show
not_shown[key] = d"""
else:
line += "%s: %s" % (key, d)
count += 1

View File

@@ -2,6 +2,8 @@ import string
import sys
class NumpadInput(object):
KEY_000_DELAY = 100
def __init__(self, root, message_handler, display, actions, data):
self.root = root
self.message_handler = message_handler
@@ -22,7 +24,13 @@ class NumpadInput(object):
numpad = list(string.ascii_lowercase[0:19])
if event.char is 'h': # DISP button
#self.root.after(60, lambda:self.on_key_press_delay(event.char))
#return
if self.data.is_display_held:
return # ignore spurious message if already held"""
self.data.is_display_held = True
if self.in_0_event:
return
if event.char is '.' or event.char is 'z':
self.actions.quit_the_program()
@@ -30,6 +38,10 @@ class NumpadInput(object):
event.char = self.on_0_key_press()
if event.char in numpad:
numbers = "jklmnopqrs"
if self.data.is_display_held and event.char in numbers:
self.select_display_mode_index(numbers.index(event.char))
else:
self.run_action_for_mapped_key(event.char)
else:
print('{} is not in keypad map'.format(event.char))
@@ -39,8 +51,11 @@ class NumpadInput(object):
if event.char in numpad:
self.check_key_release_settings(event.char)
if event.char is 'h':
self.data.is_display_held = False
##print ("--- releasing %s" % event.char)
# lag for 60ms to check that this is not a 'stream of 000' bullshit job from the keypad
if event.char is 'h' and not self.in_0_event:
self.root.after(self.KEY_000_DELAY+5, self.on_key_disp_release_delay)
#self.data.is_display_held = False
def on_mouse_move(self, event):
if self.data.settings['user_input'].setdefault(
@@ -56,6 +71,12 @@ class NumpadInput(object):
self.root.after(0, self.run_action_for_mapped_key, 'y_m', event.y / height)
#self.run_action_for_mapped_key(event.char)
def select_display_mode_index(self, index):
if index >= len(self.data.get_display_modes_list()):
self.message_handler.set_message('ERROR', 'No page %s to display!' % index)
else:
self.actions.call_method_name("set_display_mode_%s"%self.data.get_display_modes_list()[index])
def run_action_for_mapped_key(self, key, value=-1):
this_mapping = self.key_mappings[key]
if type(self.data.control_mode) is list:
@@ -76,9 +97,9 @@ class NumpadInput(object):
numbers = "jklmnopqrs"
if self.data.is_display_held and key in numbers:
return self.actions.call_method_name("set_display_mode_%s"%self.data.get_display_modes_list()[numbers.index(key)])
print('the numpad action being called is {} (mode is {})'.format(this_mapping[mode][is_function], mode))
self.select_display_mode_index(numbers.index(key))
else:
print('the numpad action being called for \'{}\' is {} (mode is {})'.format(key, this_mapping[mode][is_function], mode))
if value != -1:
self.actions.call_method_name(this_mapping[mode][is_function],value)
else:
@@ -105,27 +126,46 @@ class NumpadInput(object):
if this_mapping['DEFAULT'][0] == 'toggle_function':
self.run_action_for_mapped_key(key)
def on_key_disp_release_delay(self):
if not self.in_0_event:# and self.additional_0_in_event==0:
print("releasing !")
self.data.is_display_held = False
else:
print("ignoring release !")
"""def on_key_disp_press_delay(self):
if not self.in_0_event and self.additional_0_in_event==0:
print("pressing!")
self.data.is_display_held = True
else:
print("ignoring press!")"""
def on_0_key_press(self) :
print ("on_0_key_press!")
if(not self.in_0_event ):
print (" first 0 received!")
self.in_0_event = True
self.additional_0_in_event = 0
self.root.after(60, self.check_event_outcome)
self.root.after(self.KEY_000_DELAY, self.check_event_outcome)
else:
print (" additional 0 received making %s!" % str(self.additional_0_in_event + 1))
self.additional_0_in_event = self.additional_0_in_event + 1
def check_event_outcome(self):
if(self.additional_0_in_event == 0 ):
print (" no additional events, sending s")
self.in_0_event = False
self.run_action_for_mapped_key('s')
elif(self.additional_0_in_event > 1):
print (" %s additional events, sending n"%self.additional_0_in_event)
self.in_0_event = False
self.run_action_for_mapped_key('n')
elif(self.additional_0_in_event == 1):
print('this doesnt happen - may not be needed')
self.root.after(60, self.second_check_event_outcome)
self.root.after(self.KEY_000_DELAY, self.second_check_event_outcome)
def second_check_event_outcome(self):
print("not supposed to happen?")
if(self.additional_0_in_event == 1 ):
self.in_0_event = False
self.run_action_for_mapped_key('s')