Reorganize top-level directories with clearer naming convention
app -> app-desktop-macos, presets -> app-presets, server -> remote-server, daw-config-reaper -> osc-config-daw, plugin-reaper-realearn -> plugin-reaper-relearn. Updated run.py and presets.py path references accordingly. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 9.2 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 345 B |
|
After Width: | Height: | Size: 499 B |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 121 KiB |
@@ -0,0 +1,9 @@
|
||||
...@includes/declarations.d2
|
||||
|
||||
direction: down
|
||||
|
||||
...@includes/absolute-control-start.d2
|
||||
|
||||
fire_mode_result -> control_absolute_incremental_buttons.is_zero_or_out_of_range: pass
|
||||
|
||||
control_absolute_incremental_buttons: @includes/control-absolute-incremental-buttons.d2
|
||||
@@ -0,0 +1,7 @@
|
||||
...@includes/declarations.d2
|
||||
|
||||
direction: down
|
||||
|
||||
...@includes/absolute-control-start.d2
|
||||
|
||||
fire_mode_result -> todo: pass
|
||||
@@ -0,0 +1,24 @@
|
||||
...@includes/declarations.d2
|
||||
|
||||
direction: down
|
||||
|
||||
...@includes/absolute-control-start.d2
|
||||
|
||||
fire_mode_result -> pre_process_absolute_value.is_in_source_interval: pass
|
||||
|
||||
|
||||
pre_process_absolute_value: @includes/pre-process-absolute-value.d2
|
||||
pre_process_absolute_value.source_min_max -> prepare_absolute_value_no_performance_mode.control_transformation
|
||||
|
||||
prepare_absolute_value_no_performance_mode: @includes/prepare-absolute-value-no-performance-mode.d2
|
||||
prepare_absolute_value_no_performance_mode.round_target_value-> hit_target_considering_max_jump.does_target_provide_value
|
||||
prepare_absolute_value_no_performance_mode.value_sequence -> hit_target_considering_max_jump.does_target_provide_value
|
||||
|
||||
hit_target_considering_max_jump: @includes/hit-target-considering-max-jump.d2
|
||||
hit_target_considering_max_jump.does_target_provide_value -> target: No (e.g. virtual target)
|
||||
hit_target_considering_max_jump.which_takeover_mode -> hit_if_changed.is_target_retriggerable: Normal
|
||||
hit_target_considering_max_jump.takover_mode_result -> hit_if_changed.is_target_retriggerable: pass
|
||||
|
||||
|
||||
# Common end
|
||||
...@includes/hit-if-changed-end.d2
|
||||
@@ -0,0 +1,7 @@
|
||||
...@includes/declarations.d2
|
||||
|
||||
direction: down
|
||||
|
||||
...@includes/absolute-control-start.d2
|
||||
|
||||
fire_mode_result -> todo: pass
|
||||
@@ -0,0 +1,11 @@
|
||||
...@includes/declarations.d2
|
||||
|
||||
direction: down
|
||||
|
||||
...@includes/absolute-control-start.d2
|
||||
|
||||
fire_mode_result -> control_absolute_toggle_buttons.is_control_value_zero: pass
|
||||
|
||||
control_absolute_toggle_buttons: @includes/control-absolute-toggle-buttons.d2
|
||||
control_absolute_toggle_buttons.choose_zero_or_target_max -> target
|
||||
control_absolute_toggle_buttons.choose_target_min_or_max -> target
|
||||
@@ -0,0 +1,9 @@
|
||||
...@includes/declarations.d2
|
||||
|
||||
direction: down
|
||||
|
||||
direction: down
|
||||
|
||||
...@includes/relative-control-start.d2
|
||||
|
||||
encoder_filter_result -> todo: pass
|
||||
@@ -0,0 +1,11 @@
|
||||
...@includes/declarations.d2
|
||||
|
||||
direction: down
|
||||
|
||||
...@includes/relative-control-start.d2
|
||||
|
||||
encoder_filter_result -> control_relative_normal.is_value_seq_defined: pass
|
||||
|
||||
...@includes/relative-control-end.d2
|
||||
|
||||
...@includes/hit-if-changed-end.d2
|
||||
@@ -0,0 +1,15 @@
|
||||
discard1.class: discard
|
||||
|
||||
apply_button_filter_and_fire_mode: {
|
||||
label: Apply button filter and fire mode
|
||||
}
|
||||
|
||||
source -> apply_button_filter_and_fire_mode: Absolute control value
|
||||
|
||||
apply_button_filter_and_fire_mode -> fire_mode_result
|
||||
|
||||
fire_mode_result: {
|
||||
label: Result?
|
||||
class: decision
|
||||
}
|
||||
fire_mode_result -> discard1: ignore {left}
|
||||
@@ -0,0 +1,16 @@
|
||||
class: container
|
||||
|
||||
discard.class: discard
|
||||
|
||||
choose_value_sequence_item_relative {
|
||||
label: Choose value in sequence relatively, considering wrap
|
||||
}
|
||||
|
||||
choose_value_sequence_item_relative -> equals_target_value
|
||||
|
||||
equals_target_value {
|
||||
label: Same as current target value?
|
||||
class: decision
|
||||
}
|
||||
|
||||
equals_target_value -> discard: yes
|
||||
@@ -0,0 +1,22 @@
|
||||
discard1.class: discard
|
||||
|
||||
class: container
|
||||
|
||||
is_zero_or_out_of_range: {
|
||||
label: Is value zero or out of source min/max range?
|
||||
class: decision
|
||||
}
|
||||
is_zero_or_out_of_range -> discard1: yes
|
||||
is_zero_or_out_of_range -> is_make_absolute: no
|
||||
is_make_absolute: {
|
||||
label: Is make-absolute enabled?
|
||||
class: decision
|
||||
}
|
||||
is_make_absolute -> todo: yes
|
||||
is_make_absolute -> is_value_seq_defined: no
|
||||
is_value_seq_defined: {
|
||||
label: Do we have a value sequence?
|
||||
class: decision
|
||||
}
|
||||
is_value_seq_defined -> todo2: yes
|
||||
is_value_seq_defined -> todo3: no
|
||||
@@ -0,0 +1,19 @@
|
||||
class: container
|
||||
|
||||
is_control_value_zero: {
|
||||
label: "Is control value zero?"
|
||||
class: decision
|
||||
}
|
||||
is_control_value_zero -> discard: yes
|
||||
is_control_value_zero -> is_target_min_max_equal: no
|
||||
is_target_min_max_equal: {
|
||||
label: "Is target min/max equal?"
|
||||
}
|
||||
is_target_min_max_equal -> choose_zero_or_target_max: yes
|
||||
is_target_min_max_equal -> choose_target_min_or_max: no
|
||||
choose_zero_or_target_max: {
|
||||
label: "Choose zero or target max"
|
||||
}
|
||||
choose_target_min_or_max: {
|
||||
label: "Choose target min or max"
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
class: container
|
||||
|
||||
discard1.class: discard
|
||||
discard2.class: discard
|
||||
|
||||
is_value_seq_defined: {
|
||||
label: Do we have a value sequence?
|
||||
class: decision
|
||||
}
|
||||
is_value_seq_defined -> prepare_increment3.apply_speed: yes
|
||||
|
||||
prepare_increment3: @prepare-increment.d2
|
||||
prepare_increment3.apply_reverse -> choose_value_sequence_item_relative.choose_value_sequence_item_relative
|
||||
choose_value_sequence_item_relative: @choose-value-sequence-item-relative.d2
|
||||
|
||||
|
||||
is_value_seq_defined -> which_target_control_type: no
|
||||
which_target_control_type: {
|
||||
label: What control type does the target have?
|
||||
class: decision
|
||||
}
|
||||
which_target_control_type -> does_target_provide_value: Absolute continuous
|
||||
which_target_control_type -> prepare_increment.apply_speed: Absolute discrete
|
||||
which_target_control_type -> prepare_increment2: Relative or virtual
|
||||
|
||||
prepare_increment2: @prepare-increment.d2
|
||||
|
||||
prepare_increment: @prepare-increment.d2
|
||||
|
||||
does_target_provide_value: {
|
||||
label: Does target provide current value?
|
||||
class: decision
|
||||
}
|
||||
does_target_provide_value -> is_target_retriggerable: no
|
||||
is_target_retriggerable: {
|
||||
label: Is target retriggerable?
|
||||
class: decision
|
||||
}
|
||||
is_target_retriggerable -> discard1: no
|
||||
is_target_retriggerable -> process_negative_speed: yes
|
||||
does_target_provide_value -> apply_reverse: yes
|
||||
|
||||
apply_reverse: {
|
||||
label: Reverse if desired
|
||||
}
|
||||
|
||||
apply_reverse -> apply_step_size_min_max
|
||||
apply_step_size_min_max: {
|
||||
label: Apply step size min/max
|
||||
}
|
||||
|
||||
process_negative_speed: {
|
||||
label: Process negative speed
|
||||
}
|
||||
process_negative_speed -> process_negative_speed_result
|
||||
process_negative_speed_result: {
|
||||
label: Result?
|
||||
class: decision
|
||||
}
|
||||
process_negative_speed_result -> discard2: ignore
|
||||
@@ -0,0 +1,39 @@
|
||||
classes: {
|
||||
start: {
|
||||
style.fill: "#BDD0D8"
|
||||
}
|
||||
end: {
|
||||
style.fill: "#EEE0C9"
|
||||
}
|
||||
decision: {
|
||||
shape: diamond
|
||||
width: 100
|
||||
}
|
||||
discard: {
|
||||
shape: image
|
||||
label: ""
|
||||
icon: https://icons.terrastruct.com/essentials%2F037-stop.svg
|
||||
# icon: ./discard.svg
|
||||
width: 50
|
||||
height: 50
|
||||
}
|
||||
container: {
|
||||
label: ""
|
||||
style.fill: "#F1F0E8"
|
||||
}
|
||||
portal: {
|
||||
icon: https://icons.terrastruct.com/essentials%2F036-play%20button.svg
|
||||
width: 50
|
||||
height: 50
|
||||
}
|
||||
}
|
||||
|
||||
source: {
|
||||
label: Source
|
||||
class: start
|
||||
}
|
||||
|
||||
target: {
|
||||
label: Target
|
||||
class: end
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><path fill="currentColor" d="M7.616 20q-.672 0-1.144-.472T6 18.385V6H5V5h4v-.77h6V5h4v1h-1v12.385q0 .69-.462 1.153T16.384 20zM17 6H7v12.385q0 .269.173.442t.443.173h8.769q.23 0 .423-.192t.192-.424zM9.808 17h1V8h-1zm3.384 0h1V8h-1zM7 6v13z"/></svg>
|
||||
|
After Width: | Height: | Size: 329 B |
@@ -0,0 +1,3 @@
|
||||
hit_if_changed: @hit-if-changed.d2
|
||||
hit_if_changed.is_target_retriggerable -> target: yes
|
||||
hit_if_changed.does_target_have_desired_value -> target: no
|
||||
@@ -0,0 +1,14 @@
|
||||
class: container
|
||||
|
||||
discard.class: discard
|
||||
|
||||
is_target_retriggerable -> does_target_have_desired_value: no
|
||||
does_target_have_desired_value -> discard: yes
|
||||
is_target_retriggerable: {
|
||||
label: Is target retriggerable?
|
||||
class: decision
|
||||
}
|
||||
does_target_have_desired_value: {
|
||||
label: Does target already have the desired value?
|
||||
class: decision
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
class: container
|
||||
|
||||
discard1.class: discard
|
||||
|
||||
does_target_provide_value -> which_takeover_mode: Yes (real target)
|
||||
which_takeover_mode -> takeover_mode: else
|
||||
takeover_mode -> takover_mode_result
|
||||
takover_mode_result -> discard1: ignore
|
||||
takeover_mode: {
|
||||
label: Apply special takeover mode
|
||||
}
|
||||
does_target_provide_value: {
|
||||
label: Does the target provide a current value?
|
||||
class: decision
|
||||
}
|
||||
which_takeover_mode: {
|
||||
label: What's the takeover mode?
|
||||
class: decision
|
||||
}
|
||||
takover_mode_result: {
|
||||
label: Result?
|
||||
class: decision
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
portal_normal_relative_control: {
|
||||
label: Continue with relative control
|
||||
class: portal
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
class: container
|
||||
|
||||
discard1.class: discard
|
||||
|
||||
is_in_source_interval: {
|
||||
label: Is source value within Source Min/Max range?
|
||||
class: decision
|
||||
}
|
||||
out_of_range: {
|
||||
label: Apply out-of-range behavior
|
||||
}
|
||||
is_in_source_interval -> out_of_range: Out of range
|
||||
is_in_source_interval -> source_min_max: Within range
|
||||
out_of_range -> out_of_range_result
|
||||
out_of_range_result -> discard1: ignore
|
||||
out_of_range_result -> source_min_max: pass
|
||||
source_min_max: {
|
||||
label: Normalize value to source min/max
|
||||
}
|
||||
out_of_range_result: {
|
||||
label: Result?
|
||||
class: decision
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
class: container
|
||||
|
||||
control_transformation: {
|
||||
label: Apply EEL control transformation
|
||||
}
|
||||
reverse: {
|
||||
label: Reverse value if desired
|
||||
}
|
||||
target_min_max: {
|
||||
label: Denormalize value to target min/max
|
||||
}
|
||||
round_target_value: {
|
||||
label: Round value if desired
|
||||
}
|
||||
value_sequence: {
|
||||
label: Pick value from sequence
|
||||
}
|
||||
control_transformation -> control_transformation_result
|
||||
control_transformation_result -> reverse: absolute
|
||||
control_transformation_result -> portal_normal_relative_control: relative
|
||||
...@portal-normal-relative-control.d2
|
||||
|
||||
reverse -> is_value_seq_defined
|
||||
is_value_seq_defined -> value_sequence: yes
|
||||
is_value_seq_defined -> target_min_max: no
|
||||
target_min_max -> round_target_value
|
||||
|
||||
control_transformation_result: {
|
||||
label: Result?
|
||||
class: decision
|
||||
}
|
||||
|
||||
is_value_seq_defined: {
|
||||
label: Do we have a value sequence?
|
||||
class: decision
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
class: container
|
||||
|
||||
apply_speed: {
|
||||
label: Apply speed
|
||||
}
|
||||
apply_speed -> apply_reverse
|
||||
apply_reverse: {
|
||||
label: Reverse if desired
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
...@portal-normal-relative-control.d2
|
||||
portal_normal_relative_control -> control_relative_normal
|
||||
|
||||
control_relative_normal: @control-relative-normal.d2
|
||||
control_relative_normal.prepare_increment.apply_reverse -> apply_increment
|
||||
control_relative_normal.prepare_increment2.apply_reverse -> target
|
||||
control_relative_normal.apply_step_size_min_max -> apply_increment
|
||||
control_relative_normal.process_negative_speed_result -> target: Hit with 100%
|
||||
control_relative_normal.choose_value_sequence_item_relative.equals_target_value -> target: no
|
||||
|
||||
apply_increment {
|
||||
label: Apply increment respecting wrap and target min/max
|
||||
}
|
||||
apply_increment -> hit_if_changed.is_target_retriggerable
|
||||
@@ -0,0 +1,16 @@
|
||||
discard.class: discard
|
||||
|
||||
source -> apply_encoder_filter: Relative control Value
|
||||
|
||||
apply_encoder_filter {
|
||||
label: Apply encoder filter
|
||||
}
|
||||
|
||||
apply_encoder_filter -> encoder_filter_result
|
||||
|
||||
encoder_filter_result {
|
||||
label: Result?
|
||||
class: decision
|
||||
}
|
||||
|
||||
encoder_filter_result -> discard: ignore
|
||||
|
After Width: | Height: | Size: 115 KiB |
|
After Width: | Height: | Size: 82 KiB |
|
After Width: | Height: | Size: 195 KiB |
|
After Width: | Height: | Size: 82 KiB |
|
After Width: | Height: | Size: 103 KiB |
|
After Width: | Height: | Size: 80 KiB |
|
After Width: | Height: | Size: 204 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 355 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 151 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 251 KiB |