Skip to content

Commit

Permalink
Finish documenting ReaLearn Playtime targets
Browse files Browse the repository at this point in the history
  • Loading branch information
helgoboss committed Nov 26, 2024
1 parent a567980 commit 4bbdf02
Show file tree
Hide file tree
Showing 11 changed files with 136 additions and 46 deletions.
1 change: 1 addition & 0 deletions doc/playtime/modules/ROOT/nav.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
* xref:further-concepts.adoc[]
** xref:further-concepts/general.adoc[]
** xref:further-concepts/matrix.adoc[]
** xref:further-concepts/slot.adoc[]
* xref:advanced-usage-scenarios.adoc[]
** xref:advanced-usage-scenarios/record-performance-as-audio.adoc[]
** xref:advanced-usage-scenarios/control-with-items.adoc[]
Expand Down
45 changes: 44 additions & 1 deletion doc/playtime/modules/ROOT/pages/further-concepts/matrix.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -89,4 +89,47 @@ When connecting a xref:key-concepts.adoc#grid-controller[] to Playtime, it refle

The _control unit frame_ is a rectangle in the xref:user-interface/matrix-area.adoc[] that shows which portion of the matrix is currently shown on a certain grid controller, according to the current <<control-unit-scrolling,scroll position>>.

The display of control unit frames can be switched off using xref:user-interface/settings-dialog.adoc#settings-show-control-unit-frames[].
The display of control unit frames can be switched off using xref:user-interface/settings-dialog.adoc#settings-show-control-unit-frames[].

[[count-in-recording]]
== Count-in recording

A _count-in recording_ is a special recording method initiated while Playtime playback is stopped. The metronome starts clicking during the count-in phase, which gives you enough time to prepare for the recording.

It goes like this:

. Make sure that playback is stopped. If Playtime is playing, press the kbd:[Space] key.
. Make sure Playtime's metronome is turned *on*. If it's off, press the kbd:[M] key.
. Press the xref:user-interface/matrix-area.adoc#slot-cell-record[] button in an empty slot. That should start Playtime's playback, and you should hear and see a count-in of 2 bars, during which you can prepare. When the slot count-down reaches zero, Playtime records as usual.


Here's a video showing this way of recording:

video::sMckj_gsqh0[youtube]

[[tempo-detection-recording]]
== Tempo detection recording

A _tempo detection recording_ is a special recording method tailored to looper-style live improvisation without metronome.

Let's say you want to use a foot switch to start recording an initial loop and press it again to set the tempo for all remaining loops.

Here's how you do that:

. Make sure that playback is stopped. If Playtime is playing, press the kbd:[Space] key.
. Make sure Playtime's metronome is turned *off*. If it's on, press the kbd:[M] key. should reveal a text in the title bar, saying:
+
____
If you record a clip now, its length will dictate the project tempo!
____
+
This tells us that _tempo detection_ will be used.
. Press the MIDI foot switch mapped to the xref:user-interface/toolbar.adoc#toolbar-smart-record[] button. That should start recording *immediately*, regardless of the currently set xref:key-concepts.adoc#clip-start-timing[].
. Press the foot switch again. This should stop recording *immediately*. Playtime should set the project tempo based on the length of the recording and play back the recorded loop immediately.


Obviously, this needs a bit of practice to get right because you need to trigger start and end of the recording precisely.

Here's a video showing this way of recording:

video::kRvu6IG_0rk[youtube]
6 changes: 6 additions & 0 deletions doc/playtime/modules/ROOT/pages/further-concepts/slot.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
= Slot concepts

[[ignited-slot]]
== Ignited slot

Stopping Playtime playback doesn't just stop all playing slots, it also memorizes them, so that next time you start playback, they will play again. We call those memorized slots _ignited_. Ignited clips have a circle around their xref:user-interface/matrix-area.adoc#slot-cell-trigger[play button].
33 changes: 2 additions & 31 deletions doc/playtime/modules/ROOT/pages/usage/create.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -124,16 +124,7 @@ Find it too stressful having to grab your instrument within the short time perio
However, this approach has downsides. It will also have an effect on playing clips. Plus, you might have to wait quite long to get your turn. The next variation might suit you better.
Record in stopped state with count-in::
There's another way to give you more time to prepare. So far we have always recorded while Playtime was already playing, but we can also start recording while it's still stopped. That gives us the possibility of an arbitrarily long count-in phase.
+
. Make sure that playback is stopped. If Playtime is playing, press the kbd:[Space] key.
. Make sure Playtime's metronome is turned *on*. If it's off, press the kbd:[M] key.
. Press the xref:user-interface/matrix-area.adoc#slot-cell-record[] button in an empty slot. That should start Playtime's playback, and you should hear and see a count-in of 2 bars, during which you can prepare. When the slot count-down reaches zero, Playtime records as usual.
+
--
Here's a link:https://youtu.be/sMckj_gsqh0?si=7R9Lzod8LxN0nr9N[YouTube video] showing this way of recording.
--
There's another way to give you more time to prepare. So far we have always recorded while Playtime was already playing, but we can also start recording while it's still stopped. That gives us the possibility of an arbitrarily long count-in phase. See xref:further-concepts/matrix.adoc#count-in-recording[].
[[record-via-foot-switch]] Record via foot switch::
One more way to give you more time is to start recording with your foot instead of your hand. For this, Playtime offers the possibility to start recording clips via MIDI. In addition, it offers the convenient xref:user-interface/toolbar.adoc#toolbar-smart-record[] toolbar button, which makes it possible to use just one button - or foot switch - to record into the next non-occupied slot.
Expand All @@ -145,27 +136,7 @@ One more way to give you more time is to start recording with your foot instead
. Press it again to stop recording.
Record with tempo detection and without click::
All the approaches that we have talked about so far require a metronome or another clip to provide a rhythmical reference. However, imagine you want to do a looper-style live improvisation, without metronome. You want to use a foot switch to start recording an initial loop and press it again to set the tempo for all remaining loops.
+
Here's how you do that:
. Make sure that playback is stopped. If Playtime is playing, press the kbd:[Space] key.
. Make sure Playtime's metronome is turned *off*. If it's on, press the kbd:[M] key. should reveal a text in the title bar, saying:
+
____
If you record a clip now, its length will dictate the project tempo!
____
+
This tells us that _tempo detection_ will be used.
. Press the foot switch as set up in <<record-via-foot-switch>>. That should start recording *immediately*, regardless of the currently set xref:key-concepts.adoc#clip-start-timing[].
. Press the foot switch again. This should stop recording *immediately*. Playtime should set the project tempo based on the length of the recording and play back the recorded loop immediately.
+
--
Obviously, this needs a bit of practice to get right because you need to trigger start and end of the recording precisely.
Here's a link:https://youtu.be/kRvu6IG_0rk?si=m8uSYF88x7gptIWY[YouTube video] showing this way of recording.
--
All the approaches that we have talked about so far require a metronome or another clip to provide a rhythmical reference. However, imagine you want to do a looper-style live improvisation, without metronome. In that case, you can do a xref:further-concepts/matrix.adoc#tempo-detection-recording[].
Record non-rhythmic material::
Playtime suites itself very much for rhythmic material. But what if you want to record something that's tempo-independent? In that case, you probably want two things:
Expand Down
4 changes: 2 additions & 2 deletions doc/playtime/modules/ROOT/pages/usage/play.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -99,9 +99,9 @@ If you have messed with xref:key-concepts.adoc#clip-start-timing[], xref:user-in

Playtime's playback can be started and stopped xref:helgobox::key-concepts.adoc#instance[instance-wide], using either the xref:user-interface/toolbar.adoc#toolbar-start-stop-playback[] button in the xref:user-interface/toolbar.adoc#toolbar-transport-section[] or the kbd:[Space] key.

Stopping Playtime playback doesn't just stop all playing clips, it also memorizes them, so that next time you start playback, they will play again. We call those memorized clips _ignited_ clips. Ignited clips have a circle around their xref:user-interface/matrix-area.adoc#slot-cell-trigger[play button].
Stopping Playtime playback doesn't just stop all playing slots, it also memorizes which ones it stopped, so that next time you start playback, they will play again. We call those memorized slots xref:further-concepts/slot.adoc#ignited-slot[ignited slots]. Ignited slots have a circle around their xref:user-interface/matrix-area.adoc#slot-cell-trigger[play button].

Starting Playtime playback will automatically start all _ignited_ clips. If you don't want that, press the xref:user-interface/matrix-area.adoc#matrix-cell-stop[] or xref:user-interface/matrix-area.adoc#column-cell-stop[] button to un-ignite the clips.
Starting Playtime playback will automatically start all ignited slots. If you don't want that, press the xref:user-interface/matrix-area.adoc#matrix-cell-stop[] or xref:user-interface/matrix-area.adoc#column-cell-stop[] button to un-ignite the slots.

.Alternatives
****
Expand Down
18 changes: 17 additions & 1 deletion doc/realearn/modules/ROOT/pages/targets/playtime.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,22 @@ Here you can refer to a fixed column by entering the column number, e.g. 2.
Dynamic::
Allows you to dynamically refer to a certain column. See <<dynamic-selector-variables>>.

[[row-selector]]
== Row selector

Row-related targets use a _row selector_ to define what xref:playtime::key-concepts.adoc#row[] the target should be applied to.

The following kinds of row selectors are available:

Active::
The xref:playtime::further-concepts/matrix.adoc#active-cell[currently active] row.

At position::
Here you can refer to a fixed column by entering the row number, e.g. 2.

Dynamic::
Allows you to dynamically refer to a certain row. See <<dynamic-selector-variables>>.

[[slot-selector]]
== Slot selector

Expand All @@ -32,7 +48,7 @@ At coordinates::
Here you can refer to a fixed slot by entering the slot address, e.g. 2 and 4. The first number is the number of the xref:playtime::key-concepts.adoc#column[], the second one the number of the xref:playtime::key-concepts.adoc#row[].

Dynamic::
Allows you to dynamically refer to a certain slot. There are two expressions, the first one should evaluate to the column index and the second one to the row index. As always, expressions must evaluate to zero-based indexes! See TODO <<dynamic-selector-variables>>.
Allows you to dynamically refer to a certain slot. There are two expressions, the first one should evaluate to the column index and the second one to the row index. As always, expressions must evaluate to zero-based indexes! See <<dynamic-selector-variables>>.

[[dynamic-selector-variables]]
== Dynamic selector variables
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,22 @@

Invokes a xref:playtime::key-concepts.adoc#column[]-related action.

TODO

== Action menu

The kind of action to be executed.

Stop::
Stops all slots in this column.

Arm/disarm::
When hit with an _on_ value, arms the associated xref:playtime::key-concepts.adoc#column-track[], otherwise disarms it.

Arm/disarm () exclusive::
When hit with an _on_ value, arms the associated xref:playtime::key-concepts.adoc#column-track[] and disarms all other column tracks, otherwise disarms it.

Activate::
Makes this column the xref:playtime::further-concepts/matrix.adoc#active-cell[] .

== Column menu

The xref:playtime::key-concepts.adoc#column[] on which to carry out this action. See xref:targets/playtime.adoc#column-selector[].
Original file line number Diff line number Diff line change
Expand Up @@ -2,36 +2,51 @@

Invokes a xref:playtime::key-concepts.adoc#matrix[]-related action.

TODO

== Action menu

The kind of action to be executed.

Stop::
Stops all clips in the matrix. See xref:playtime::user-interface/matrix-area.adoc#column-cell-stop[]. Supports real-time operation.

Undo::
When hit with an _on_ value, undoes the last matrix operation. See xref:helgobox::app/user-interface/title-bar.adoc#title-bar-undo[].

Redo::
When hit with an _on_ value, redoes the last matrix operation. See xref:helgobox::app/user-interface/title-bar.adoc#title-bar-redo[].

Build scene::
When hit with an _on_ value, builds a xref:playtime::key-concepts.adoc#scene[] of all currently playing xref:playtime::key-concepts.adoc#clip[clips] in the first empty xref:playtime::key-concepts.adoc#row[].

Set record length mode::
Switches to a specific record-length mode. At the moment, only two possible modes exist: *Open end* and *Custom length* are supported. They correspond to the off and on state of xref:playtime::user-interface/inspector/matrix/recording.adoc#inspector-matrix-recording-length[].

Set custom record length in bars::
Sets the xref:playtime::user-interface/inspector/matrix/recording.adoc#inspector-matrix-recording-length[] to the desired number of bars.

Enable/disable click::
When hit with an _on_ value, enables the xref:playtime::user-interface/toolbar.adoc#toolbar-metronome[], otherwise disables it.

Enable/disable MIDI auto-quantize::
When hit with an _on_ value, enables xref:playtime::user-interface/inspector/matrix/recording.adoc#inspector-matrix-recording-auto-quantize[], otherwise disables it.

Smart record::
When hit with an _on_ value, triggers the xref:playtime::user-interface/toolbar.adoc#toolbar-smart-record[] function. If this leads to the stop of a xref:playtime::further-concepts/matrix.adoc#tempo-detection-recording[], the operation can be carried out in real-time.

Play ignited or enable silence mode::
When hit with an _on_ value, this starts Playtime playback and plays all xref:playtime::further-concepts/slot.adoc#ignited-slot[ignited] slots. Otherwise, this stops Playtime playback. This basically resembles the xref:playtime::user-interface/toolbar.adoc#toolbar-start-stop-playback[] button. This action supports real-time invocation.

Enable/disable silence mode::
When hit with an _on_ value, this stops Playtime playback. Otherwise, it starts playback _without_ playing xref:playtime::further-concepts/slot.adoc#ignited-slot[ignited] slots. This action supports real-time invocation.

Panic::
This abruptly stops all clips in the matrix. This resembles a double click on the xref:playtime::user-interface/matrix-area.adoc#matrix-cell-stop[] button. This action supports real-time invocation.

Enable/disable sequencer recording::
When hit with an _on_ value, this starts recording a new xref:playtime::key-concepts.adoc#matrix-sequence[], otherwise it stops recording.

Enable/disable sequencer playing::
When hit with an _on_ value, this starts playting the currently active xref:playtime::key-concepts.adoc#matrix-sequence[], otherwise it stops playing.

Tap tempo::
Tap tempo::
Invokes the tap-tempo function. This action supports real-time invocation. See xref:playtime::user-interface/toolbar.adoc#toolbar-tap-tempo[].
25 changes: 24 additions & 1 deletion doc/realearn/modules/ROOT/pages/targets/playtime/row-action.adoc
Original file line number Diff line number Diff line change
@@ -1,3 +1,26 @@
= Target "Playtime: Row action"

include::partial$under-construction.adoc[]
== Action menu

The kind of action to be executed.

Most of the actions only execute when the target is hit with an _on_ value. In all other cases, it's specifically mentioned.

Play::
Acts like the xref:playtime::user-interface/matrix-area.adoc#row-cell-play-scene[] button. This action supports real-time invocation.

Build scene::
Acts like the xref:playtime::user-interface/row-menu.adoc#row-build-scene-from-currently-playing-clips[] function.

Clear::
Acts like the xref:playtime::user-interface/row-menu.adoc#row-clear[] function.

Copy or paste::
If the row contains clips, copies them to a matrix-internal clipboard. If the row is empty, attempts to paste clips from the matrix-internal clipboard into that row, replacing existing ones.

Activate::
Makes this row the xref:playtime::further-concepts/matrix.adoc#active-cell[].

== Row menu

The xref:playtime::key-concepts.adoc#row[] on which to carry out this action. See xref:targets/playtime.adoc#row-selector[].
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Edit first clip::
When hit with an _on_ value, opens the MIDI editor for the primary clip in the slot, otherwise close its. Works for MIDI clips only.

Copy or paste clip::
If the slot contains clips, copies all clips to a matrix-internal clipboard. If the slot is empty, attempts to paste clips from the matrix-internal clipboard into that slot, replacing existing ones.
If the slot contains clips, copies them to a matrix-internal clipboard. If the slot is empty, attempts to paste clips from the matrix-internal clipboard into that slot, replacing existing ones.

Double clip section length::
Doubles the xref:playtime::user-interface/inspector/clip.adoc#inspector-clip-length[] of each clip contained in the slot.
Expand All @@ -33,6 +33,6 @@ Duplicate::
Duplicates the clips of this slot to the slot below. If the slot below already contains clips, they will get replaced.

Activate::
Makes this slot the xref:playtime::further-concepts/matrix.adoc#active-cell[] .
Makes this slot the xref:playtime::further-concepts/matrix.adoc#active-cell[].

include::partial$targets/playtime/slot-menu.adoc[]
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,11 @@ Record/stop::
When hit with an _on_ value, starts slot recording, otherwise stops it.

Record/play/stop::
* When hit with an _on_ value and the slot is empty, starts slot recording.
* When hit with an _on_ value and the slot contains clips, starts playback.
* When hit with an _off_ value, stops the slot.
When hit with an _on_ value and the slot is empty, starts slot recording.
+
When hit with an _on_ value and the slot contains clips, starts playback.
+
When hit with an _off_ value, stops the slot.

Overdub/play::
When hit with an _on_ value, starts MIDI-overdubbing the slot, otherwise stops it.
Expand Down

0 comments on commit 4bbdf02

Please sign in to comment.