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>
This commit is contained in:
Paul Lipscomb
2026-07-15 17:51:05 -04:00
parent e58f06d9fa
commit 7ecc718f5d
2256 changed files with 11 additions and 5 deletions
@@ -0,0 +1,10 @@
= Target "Project: Any on (solo/mute/...)"
This target is most useful in feedback direction.
Map it to some LED on your controller and the LED will light up if at least one of the tracks in your project is e.g. mute (depending on the track parameter in question).
If the control element is also a button, pressing the button will e.g. unmute all tracks in your project.
== Parameter menu
The track parameter in question.
@@ -0,0 +1,29 @@
= Target "Project: Browse tracks"
Steps through tracks.
To be used with endless rotary encoders or xref:user-interface/mapping-panel/glue-section.adoc#incremental-button[].
== Scroll TCP checkbox
See xref:targets/track/select-unselect.adoc[].
== Scroll mixer checkbox
See xref:targets/track/select-unselect.adoc[].
== Scope menu
Decides which tracks are considered and how.
All tracks:: Considers all tracks even those which are hidden.
Only tracks visible in TCP:: Considers only those tracks which are visible in the track control panel.
Only tracks visible in TCP (allow 2 selections):: Like "Only tracks visible in TCP" but makes it possible to have 2 selections.
One for the MCP and one for the TCP.
These selections can be moved independently.
This can make sense if you have a bunch of tracks that you only show in the TCP and another separate bunch of tracks that you only show in the MCP.
Only tracks visible in MCP:: Considers only those tracks which are visible in the mixer control panel.
Only tracks visible in MCP (allow 2 selections):: See above.
@@ -0,0 +1,80 @@
= Target "Project: Invoke REAPER action"
Triggers or sets the value of a particular REAPER action in the main section.
== Section menu
Specifies in which context the action is going to be invoked.
Main:: Invokes a main action.
Active MIDI editor:: Invokes a MIDI editor action, applied to the currently active MIDI editor.
Active MIDI event list editor:: Invokes a MIDI event list action, applied to the currently active MIDI editor.
Media explorer:: Invokes a media explorer action.
[[invocation-type]]
== Invocation type
Specifies _how_ the picked action is going to be controlled.
Trigger:: Invokes the action with the incoming absolute control value, but only if it's greater than 0%.
Most suitable for simple trigger-like actions that neither have an on/off state nor are annotated with "(MIDI CC/OSC only)" or similar.
Absolute 14-bit:: Invokes the action with the incoming absolute control value, even if it's 0%.
Most suitable for actions which either have an on/off state or are annotated with "(MIDI CC/OSC only)" or similar.
The resolution of the invocation is 14-bit, no matter what's the resolution of your control element).
Absolute 7-bit:: Just like the previous invocation mode but uses 7-bit resolution.
Might be necessary for actions provided by 3rd-party extensions which don't interpret 14-bit control values correctly.
In all other circumstances, 14-bit is probably the better default choice.
Relative:: Invokes the action with the incoming relative control value (absolute ones are ignored).
Only works for actions that are annotated with ("MIDI CC relative only") or similar.
== Pick! button
Opens REAPER's action dialog so you can select the desired action.
== With track checkbox
Allows you to choose a track which ReaLearn will select before executing the action.
This makes it possible to combine ReaLearn's flexible track selection capabilities with the plethora of REAPER actions that work on the currently selected track.
== Limitations
The particular action decides if toggling/feedback works completely, has limitations or is not possible at all.
There are multiple types of actions so it's not possible to settle with one invocation type and be done with it.
The types of actions can roughly be divided into:
Actions that take care of toggling themselves _and_ report on/off state::
* Example: "25. Track: Toggle record arm for track 01"
* If you want toggle behavior, you have 2 options:
** a) Set Invoke to "Absolute" and Mode to "Toggle button" (preferred).
** b) Set Invoke to "Trigger" and Mode to "Normal".
* Feedback is completely supported.
Actions that take care of toggling themselves but _don't_ report on/off state::
* Example: "40175. Item properties: Toggle mute"
* Toggle behavior is achieved as described in (1) but support for toggling and feedback has limitations (explained in (4)).
Actions that don't take care of toggling themselves ("trigger only")::
* Example: "1007. Transport: Play"
* There's no way to make such an action toggle because the action is not designed to do so.
* If the action reports an on/off state, feedback is completely supported though, otherwise not at all!
Actions that have a complete range of values as state::
* Example: "994. View: Adjust vertical zoom (MIDI CC/OSC only)"
* Since ReaLearn 2 and REAPER 6.20, there's special support for this type of actions.
Starting from the first time this action is triggered, ReaLearn will track its current value.
* That's why toggling is supported.
Because ReaLearn itself takes care of toggling, you need to set _Invoke_ to "Absolute" and Mode to "Toggle button".
* Feedback is also supported.
* Toggling/feedback for this type of actions comes with some inherent limitations that are related to the fact that a) REAPER itself doesn't necessarily use actions to invoke its own functions and b) MIDI CC/OSC actions don't have the concept of a "current value" (unlike e.g. toggle actions or FX parameters).
* The bottom line of these limitations is that toggling/feedback will only work if the action itself is used to trigger the change and if the action is an absolute action (not relative).
* Limitations in detail:
+
. In most cases, feedback will not work when changing the value in REAPER directly (e.g. when adjusting vertical zoom directly via the REAPER user interface).
. It will only work for actions that support some kind of absolute value range (usually the case for all non-relative MIDI CC/OSC actions).
. When the action is invoked via ReaLearn, the feedback will only work if "Invoke" is "Trigger" or "Absolute".
It won't work with "Relative".
. When the action is invoked from ReaScript or other extensions, it will only work if the invocation was done via `KBD_OnMainActionEx()` and an absolute value change.
. When the action is invoked via a native REAPER action mapping, it will only work if the invocation is done using absolute MIDI CC/OSC (not relative).
@@ -0,0 +1,16 @@
= Target "Project: Invoke transport action"
Invokes a transport-related action.
== Action menu
Specifies which transport action should be invoked.
Play/stop:: Starts playing the containing project if the incoming absolute control value is greater than 0%, otherwise invokes stop.
Play/pause:: Starts playing the containing project if the incoming absolute control value is greater than 0%, otherwise invokes pause.
Stop:: Stops the containing project if the incoming absolute control value is greater than 0%.
Useful for distinguishing feedback between _paused_ and _stopped_ state.
Pause:: Pauses the containing project if the incoming absolute control value is greater than 0%.
Useful for distinguishing feedback between _paused_ and _stopped_ state.
Record:: Starts/enables recording for the current project if the incoming absolute control value is greater than 0%, otherwise disables recording.
Repeat:: Enables repeat for the containing project if the incoming absolute control value is greater than 0%, otherwise disables it.
@@ -0,0 +1,72 @@
= Target "Project: Seek"
Allows you to use faders, knobs, encoders or incremental buttons to seek within portions of your project … with feedback that indicates the current position!
include::partial$targets/feedback-frequency-menu.adoc[]
== Behavior menu
Determines whether to use immediate or smooth seeking.
== Seek play checkbox
Doesn't just change the edit cursor but also changes the play position when the project is currently being played.
== Move view checkbox
Allow to scroll / change viewport when seeking.
== "Use" checkboxes
The following checkboxes determine which time ranges will be taken into consideration as reference for seeking (control) and feedback.
If you don't tick any "Use" checkbox, ReaLearn will seek within the currently visible viewport.
If you tick multiple options, this is the order of fallbacks:
* If there's no time selection, the loop points will be used.
* If there are no loop points, the current region is used.
* If there's no current region, the project will be used.
* If the project is empty, the viewport will be used.
=== Use time selection checkbox
Can use the currently set time selection as reference.
=== Use loop points checkbox
Can use the currently set loop points as reference.
=== Use regions checkbox
Can use the current region as reference.
=== Use project checkbox
Can use the complete project as reference, from start to end.
== Target-specific properties
This target supports the following additional xref:further-concepts/target.adoc#target-property[target properties].
[cols="m,1,3"]
|===
|Name|Type|Description
|target.position.project_default | String | Position in the current transport time unit
|target.position.time | String | _minute:second.milli_
|target.position.measures_beats_time | String | _measure.beat.milli_
|target.position.measures_beats | String | _measure.beat.milli_
|target.position.seconds | String | _second.milli_
|target.position.samples | String | _sample_
|target.position.hmsf | String | _hour:minute:second:milli_
|target.position.absolute_frames | String | _frames_
|target.position.project_default.mcu | String | Like `target.position.project_default` but tailored to Mackie Control timecode displays
|target.position.time.mcu | String | Like `target.position.time` but tailored to Mackie Control timecode displays
|target.position.measures_beats_time.mcu | String | Like `target.position.measures_beats_time` but tailored to Mackie Control timecode displays
|target.position.measures_beats.mcu | String | Like `target.position.measures_beats` but tailored to Mackie Control timecode displays
|target.position.seconds.mcu | String | Like `target.position.seconds` but tailored to Mackie Control timecode displays
|target.position.samples.mcu | String | Like `target.position.samples` but tailored to Mackie Control timecode displays
|target.position.hmsf.mcu | String | Like `target.position.hmsf` but tailored to Mackie Control timecode displays
|target.position.absolute_frames.mcu | String | Like `target.position.absolute_frames` but tailored to Mackie Control timecode displays
|===
@@ -0,0 +1,5 @@
= Target "Project: Set playrate"
Sets REAPER's master playrate.
CAUTION: This target doesn't currently work if the project containing ReaLearn is not the active project tab.
@@ -0,0 +1,5 @@
= Target "Project: Set tempo"
Sets REAPER's master tempo.
This target is not learnable anymore via the "Learn target" button and also not eligible for the xref:targets/global/last-touched.adoc[] because it causes too many "false positives".