Vendor helgoboss/helgobox (ReaLearn) as basis for custom UI fork
Stripped upstream git history; starting point for replacing the native SWELL/Win32 mapping UI with something more suited to bulk editing. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
= Advanced usage scenarios
|
||||
|
||||
In xref:usage.adoc[], we have learned how Playtime is typically used. But it doesn't end there! Playtime is designed in a quite open-ended way, which makes it versatile enough to use it in plenty of other scenarios.
|
||||
|
||||
This section explores some of the more advanced usage scenarios.
|
||||
+118
@@ -0,0 +1,118 @@
|
||||
= Control Playtime with items
|
||||
|
||||
Because Playtime is an instrument plug-in, it can be controlled via MIDI. Not just via external MIDI controllers, but also from within REAPER. You can just put MIDI items on the Playtime track and start REAPER playback, exactly as you would do it with a synthesizer.
|
||||
|
||||
== 1. Set up matrix
|
||||
|
||||
Click xref:user-interface/matrix-area.adoc#matrix-cell-settings[] to open the xref:user-interface/inspector/matrix.adoc[] and make the following settings:
|
||||
|
||||
|===
|
||||
| Setting | Value | Reason
|
||||
|
||||
| xref:user-interface/inspector/matrix/playback.adoc#inspector-matrix-start-timing[]
|
||||
| xref:user-interface/inspector/clip.adoc#inspector-clip-start-timing-immediately[]
|
||||
.2+| Position and length of a note in the MIDI editor should correspond exactly to the position and length of clip playback.
|
||||
|
||||
| xref:user-interface/inspector/matrix/playback.adoc#inspector-matrix-trigger-mode[]
|
||||
| xref:user-interface/inspector/column/playback.adoc#inspector-column-trigger-mode-momentary[]
|
||||
|
||||
| xref:user-interface/inspector/matrix/playback.adoc#inspector-matrix-activate-slot-on-trigger[]
|
||||
| Off
|
||||
| We don't want the Playtime selection to jump around like crazy.
|
||||
|
||||
|===
|
||||
|
||||
Also ensure that you haven't overridden the first two properties on column or clip level!
|
||||
|
||||
Additionally, you might want to switch off xref:user-interface/inspector/column/playback.adoc#inspector-column-exclusive-mode[] for columns, in order to get more freedom of playing.
|
||||
|
||||
== 2. Create MIDI triggers
|
||||
|
||||
Before you can control Playtime with MIDI notes, you need to set up MIDI triggers.
|
||||
|
||||
=== Option A: Learn MIDI triggers manually
|
||||
|
||||
One way to do this is to learn the necessary MIDI triggers manually by using the xref:user-interface/toolbar.adoc#toolbar-show-hide-midi-triggers[] feature. See xref:usage/play.adoc#feature-keys[].
|
||||
|
||||
[[assign-midi-triggers-automatically]]
|
||||
=== Option B: Assign MIDI triggers automatically
|
||||
|
||||
Another way to do this is to automatically assign MIDI notes to each slot cell. We can easily do that by importing a snippet of Lua code into ReaLearn.
|
||||
|
||||
Below code snippet by default spreads MIDI notes row by row in groups of 8, starting at the note C3. You can change that by modifying the configuration section before importing it into ReaLearn.
|
||||
|
||||
. Copy below code to the clipboard
|
||||
. Press xref:helgobox::app/user-interface/navigation-bar.adoc#navbar-show-helgobox-plugin[] in the navigation bar on the left. This should open the xref:realearn::user-interface/main-panel.adoc[ReaLearn main panel].
|
||||
. Press the xref:realearn::user-interface/main-panel/menu-bar.adoc#import-from-clipboard[]
|
||||
+
|
||||
CAUTION: This will overwrite existing MIDI mappings in the xref:realearn::key-concepts.adoc#unit[ReaLearn main unit].
|
||||
. After confirming the import, you should see a list of mappings in ReaLearn. But also in the xref:user-interface.adoc[Playtime user interface], when pressing xref:user-interface/toolbar.adoc#toolbar-show-hide-midi-triggers[showing the MIDI triggers].
|
||||
|
||||
[source,lua]
|
||||
----
|
||||
-- Configuration
|
||||
|
||||
-- The first mapped note (key 48 correponds to C3)
|
||||
local first_key = 48
|
||||
-- The first mapped column
|
||||
local first_column = 0
|
||||
-- The first mapped row
|
||||
local first_row = 0
|
||||
-- If true, assignments will be spread row by row, otherwise column by column
|
||||
local row_wise = true
|
||||
-- Make that many assignments until jumping to the next column or row
|
||||
local group_size = 8
|
||||
|
||||
-- Build mappings
|
||||
|
||||
local mappings = {}
|
||||
for k = first_key, 127 do
|
||||
local i = k - first_key
|
||||
local i1 = math.floor(i / group_size)
|
||||
local i2 = i % group_size
|
||||
local mapping = {
|
||||
source = {
|
||||
kind = "MidiNoteVelocity",
|
||||
channel = 0,
|
||||
key_number = k,
|
||||
},
|
||||
target = {
|
||||
kind = "PlaytimeSlotTransportAction",
|
||||
slot = {
|
||||
address = "ByIndex",
|
||||
column_index = first_column + if row_wise then i2 else i1,
|
||||
row_index = first_row + if row_wise then i1 else i2,
|
||||
},
|
||||
action = "Trigger",
|
||||
},
|
||||
}
|
||||
table.insert(mappings, mapping)
|
||||
end
|
||||
|
||||
-- Return result
|
||||
|
||||
return {
|
||||
kind = "MainCompartment",
|
||||
value = {
|
||||
mappings = mappings,
|
||||
},
|
||||
}
|
||||
----
|
||||
|
||||
[[record-and-edit-midi-items]]
|
||||
== 3. Record and edit MIDI items
|
||||
|
||||
Now we are ready to record some MIDI items that control our clips.
|
||||
|
||||
. Ensure that the Playtime track is armed in REAPER and that all other tracks are unarmed. You should be able to trigger Playtime clips with your MIDI keyboard!
|
||||
. Start recording in REAPER
|
||||
. Play stuff on your MIDI keyboard
|
||||
. Stop recording in REAPER
|
||||
. Play back the MIDI item which you just recorded on the Playtime track
|
||||
|
||||
REAPER should repeat what you just played, cool!
|
||||
|
||||
Now you can edit the MIDI item as desired, using REAPER's MIDI editor. For example, you could quantize all notes.
|
||||
|
||||
.Rendering advice
|
||||
IMPORTANT: Do you want to render your project? As Playtime will not participate in rendering, you first need to turn your performance into a regular REAPER arrangement. Please read xref:usage/arrangement.adoc[] for more information.
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
= Generate a matrix using code
|
||||
|
||||
[[feature-import-export-lua]]
|
||||
Just as it is possible to xref:advanced-usage-scenarios/control-with-items.adoc#assign-midi-triggers-automatically[generate ReaLearn mappings via Luau], you can also generate a Playtime xref:key-concepts.adoc#matrix[] via Luau.
|
||||
|
||||
.This guide is a work in progress
|
||||
WARNING: The matrix generated by this example xref:key-concepts.adoc#matrix[] is viewable, but not yet playable! It will be improved in the future to be playable as well.
|
||||
|
||||
Proceed like this:
|
||||
|
||||
. Copy below Luau code to the clipboard
|
||||
. Press the xref:helgobox::app/user-interface/navigation-bar.adoc#navbar-show-helgobox-plugin[] icon in the navigation bar on the left.
|
||||
. Press xref:helgobox::plug-in/user-interface/menu-bar.adoc#import-from-clipboard[].
|
||||
. After confirming the import, you should see a large and wildly colorful matrix.
|
||||
|
||||
.Colorful matrix
|
||||
[source,lua]
|
||||
----
|
||||
local column_count = 10
|
||||
local row_count = 200
|
||||
|
||||
-- Clip source
|
||||
|
||||
-- Build columns
|
||||
local columns = {}
|
||||
local clip_index = 0
|
||||
for c = 0, column_count - 1 do
|
||||
local slots = {}
|
||||
for r = 0, row_count - 1 do
|
||||
if (c % 2 == 0 and r % 2 == 0) or (c % 2 == 1 and r % 2 == 1) then
|
||||
local slot = {
|
||||
row = r,
|
||||
clips = {
|
||||
{
|
||||
name = `Clip {c + 1}/{r + 1}`,
|
||||
color = {
|
||||
kind = "PaletteColor",
|
||||
index = 5 + clip_index % 17,
|
||||
},
|
||||
source = {
|
||||
kind = "MidiChunk",
|
||||
chunk = [[
|
||||
HASDATA 1 960 QN
|
||||
E 3840 b0 7b 00 0
|
||||
IGNTEMPO 1 120 4 4
|
||||
]],
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
table.insert(slots, slot)
|
||||
clip_index += 1
|
||||
end
|
||||
end
|
||||
local column = {
|
||||
slots = slots or nil,
|
||||
}
|
||||
table.insert(columns, column)
|
||||
end
|
||||
|
||||
-- Build rows
|
||||
local rows = {}
|
||||
for r = 1, row_count do
|
||||
local row = {
|
||||
name = `Scene {r}`,
|
||||
}
|
||||
table.insert(rows, row)
|
||||
end
|
||||
|
||||
-- Build matrix
|
||||
local matrix = {
|
||||
columns = columns,
|
||||
rows = rows,
|
||||
}
|
||||
|
||||
-- Return result
|
||||
return {
|
||||
kind = "ClipMatrix",
|
||||
version = "2.16.15",
|
||||
value = matrix,
|
||||
}
|
||||
----
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
= Meta clips
|
||||
|
||||
We can take the previous scenario xref:advanced-usage-scenarios/control-with-items.adoc[] a step further!
|
||||
|
||||
[[feature-meta-clips]]
|
||||
== The idea
|
||||
|
||||
If we can control Playtime with MIDI items, shouldn't it be possible to control it with MIDI xref:key-concepts.adoc#clip[_clips_] as well? The answer is yes! I call such clips _meta clips_. *Playtime can basically play itself!*
|
||||
|
||||
Meta clips open up a whole new world of possibilities. Here are just some of the things you can do with them:
|
||||
|
||||
* Meta clips can be used as xref:key-concepts.adoc#scene[scenes] on steroids. You can trigger many other clips at once, no matter in which row they are.
|
||||
* You can record sequences of clip invocations and play them back at the press of a button.
|
||||
|
||||
== Basic setup
|
||||
|
||||
. Prepare the matrix and set up MIDI triggers as explained in xref:advanced-usage-scenarios/control-with-items.adoc[]. This should make it possible to play clips using your MIDI keyboard. Make sure that part works.
|
||||
. Select the track "Playtime" in your REAPER project (this is the track which contains the xref:helgobox::key-concepts.adoc#instance[Helgobox instance], by default the first track in the project)
|
||||
. Right-click the xref:user-interface/matrix-area.adoc#column-cell-label[] of some column, for example the last column. Choose xref:user-interface/menus/matrix-menu.adoc#matrix-insert-column-for-each-selected-track[].
|
||||
+
|
||||
This should add a new column named "Playtime" that plays back its MIDI clips on the "Playtime" track, and can therefore be used to _play other clips_.
|
||||
.
|
||||
. Now simply record a clip into the new "Playtime" column, while playing clips in other columns using your MIDI keyboard.
|
||||
. That's it! You recorded your first meta clip. When playing it back, it should trigger other clips in other columns. You can also edit that meta clip, e.g. quantize its notes.
|
||||
|
||||
You may look at the "Playtime" column as the *leader* column (which you trigger) and the other columns as *follower* columns (which are triggered by the leader column).
|
||||
|
||||
== Adjust the setup to your needs
|
||||
|
||||
This was just an example setup. You can adjust it to your needs. Here are some ideas:
|
||||
|
||||
* Introduce more leader columns
|
||||
* Move the leader column to the very left to make it obvious that it is a very important column
|
||||
* Set the xref:user-interface/inspector/column/playback.adoc#inspector-column-start-timing[] for the *Playtime* column to *1 bar*
|
||||
* Set the xref:user-interface/inspector/column/playback.adoc#inspector-column-trigger-mode[] to xref:user-interface/inspector/column/playback.adoc#inspector-column-trigger-mode-toggle[]
|
||||
|
||||
|
||||
IMPORTANT: Using MIDI clips to control Playtime is subject to the same considerations about _rendering_ as when using MIDI items. Read xref:usage/arrangement.adoc[] for more information.
|
||||
|
||||
[TIP]
|
||||
.Meta clips are just the beginning
|
||||
====
|
||||
The simple fact that Playtime is a MIDI-controllable instrument opens up even more possibilities.
|
||||
|
||||
Here are some ideas:
|
||||
|
||||
* Use a MIDI arpeggiator to arpeggiate between different clips
|
||||
* Write a MIDI link:https://www.reaper.fm/sdk/js/js.php[JSFX] effect that controls clips
|
||||
====
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
= Multiple instances
|
||||
|
||||
[[feature-multiple-instances]]
|
||||
Because Helgobox is implemented as an xref:helgobox::plug-in.adoc[instrument plug-in], you can add multiple xref:helgobox::key-concepts.adoc#instance[instances] of it. That also means you can have multiple xref:key-concepts.adoc#matrix[Playtime matrices] in the same project.
|
||||
|
||||
== How to do it
|
||||
|
||||
Assuming you have one Playtime instance already, here's how you add another one:
|
||||
|
||||
. Right-click REAPER's track control panel and choose menu:Insert virtual instrument on new track...[]
|
||||
. Double-click instrument plug-in "VSTi: Helgobox - ReaLearn & Playtime (Helgoboss)"
|
||||
. In the xref:helgobox::plug-in/user-interface.adoc[Helgobox plug-in window], press menu:Menu[Show app]
|
||||
. In the xref:helgobox::app/user-interface.adoc[Helgobox app window], press the image:screenshots/playtime-toolbar-icon.png[Playtime,width=30] button in the xref:helgobox::app/user-interface/navigation-bar.adoc[] on the left.
|
||||
. Press the button btn:[Create a Playtime Matrix]
|
||||
|
||||
That's it! You now have a second xref:key-concepts.adoc#matrix[] in the project, that runs independently of the first one.
|
||||
|
||||
TIP: Currently, the only way to open that second matrix is to open the xref:helgobox::plug-in/user-interface.adoc[plug-in window] of that second xref:helgobox::key-concepts.adoc#instance[Helgobox instance] and press menu:Menu[Show app]. In the future, a separate REAPER action is planned, to make that step easier.
|
||||
|
||||
== Why?
|
||||
|
||||
Up to you!
|
||||
|
||||
I'm keen to hear if and how you use this possibility. Let me know on my link:https://www.youtube.com/channel/UC5fE-sfXnXuAX3EC1VM85oA[YouTube channel], on link:https://github.com/helgoboss/helgobox/discussions[GitHub discussions], on link:https://forum.cockos.com/showthread.php?t=292969[the REAPER forum] or via mailto:info@helgoboss.org[] :)
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
= Record performance as multi-track audio
|
||||
|
||||
Due to the way Playtime works, it is possible to record your Playtime performance directly to the xref:key-concepts.adoc#column-track[column tracks] as audio items. This is basically a sort of multi-track online rendering approach. It can be used as an audio-only post-FX alternative to recording xref:key-concepts.adoc#matrix-sequence[matrix sequences].
|
||||
|
||||
.Drawbacks
|
||||
[CAUTION]
|
||||
====
|
||||
Before you proceed, be aware that this technique has a few drawbacks:
|
||||
|
||||
. Below-mentioned step 2 will change the xref:user-interface/track-area.adoc#track-panel-input-monitoring[] setting for all xref:key-concepts.adoc#column-track[column tracks], which might not be what you want! You will need to restore the old input monitoring settings afterward.
|
||||
. Step 4 obviously changes the record-arm state within Playtime, which might also not be what you want! You will need to restore the old arm states afterward.
|
||||
. Playing back the resulting multi-track audio will naturally flow through the track FX chain again. However, since the recording was done post-FX, the track FX is already part of the recorded audio. In order to avoid applying the FX twice, you would need to temporarily disable the FX of the affected xref:key-concepts.adoc#column-track[column tracks].
|
||||
====
|
||||
|
||||
|
||||
It goes like this:
|
||||
|
||||
. Select all xref:key-concepts.adoc#column-track[column tracks] in the REAPER track control panel
|
||||
. Right-click the record-arm button of one track in the selection and disable menu:Monitor input[]. This is a safety measure to prevent audio feedback.
|
||||
. Right-click the record-arm button again and enable menu:Record: output[Record: output (stereo)]
|
||||
+
|
||||
TIP: This step doesn't have any effect on recording within Playtime. Playtime will still record from the xref:user-interface/track-area.adoc#track-panel-input[], not from the track output. So this step shouldn't have any negative consequences.
|
||||
. Click the record-arm button. This should record-arm all column tracks.
|
||||
. Start recording in REAPER
|
||||
. Now play and stop clips in the Playtime xref:key-concepts.adoc#matrix[] as desired
|
||||
. Stop recording in REAPER when you are finished
|
||||
|
||||
Each column track now contains a stereo recording of its audio output.
|
||||
|
||||
|
||||
.Feedback wanted
|
||||
[NOTE]
|
||||
====
|
||||
Recording the performance as multi-track audio is a sort of "accidental feature" that is technically possible but not "officially" supported, because Playtime has not been optimized for it! It comes with the mentioned drawbacks, but it is there when you need it. If you like this feature and wish there would be a more streamlined version of it, post your idea at link:https://github.com/helgoboss/helgobox/discussions[GitHub discussions].
|
||||
====
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
= Start custom Playtime from template
|
||||
|
||||
[[start-custom-playtime]]
|
||||
Would you like to adjust the default settings of new xref:key-concepts.adoc#instance[Playtime instances]? Then you are at the right place.
|
||||
|
||||
== Most settings in Playtime are instance-specific
|
||||
|
||||
When designing software with the concept of xref:key-concepts.adoc#instance[instances] or projects, a common challenge is deciding whether a particula setting should be **global** (immediately affecting all instances), **global template-like** (affecting all new instances) or **instance-specific** (affect only the current instance).
|
||||
|
||||
For Playtime, I chose to make most settings **instance-specific**. Only settings related to _appearance_ and _performance_ -- essentially everything in the xref:user-interface/dialogs/settings-dialog.adoc[] -- are global. The primary advantage of this approach is that it allows precise restoration of any instance, ensuring it behaves exactly as it was saved.
|
||||
|
||||
However, this approach has a drawback: You need to adjust settings for every new instance manually, especially if the default settings don’t match your preferences.
|
||||
|
||||
== Track templates to the rescue
|
||||
|
||||
You can solve this issue by leveraging a feature that you probably already know: *REAPER track templates*!
|
||||
|
||||
. Create a Playtime instance as usual as explained in xref:usage/prepare.adoc#fire-up-playtime[].
|
||||
|
||||
. Modify the instance-specific settings to suit your needs. For example:
|
||||
* Change settings in the xref:user-interface/inspector/matrix.adoc[].
|
||||
* Change metronome settings in the xref:user-interface/dialogs/tempo-settings-dialog.adoc[].
|
||||
* Add frequently used columns with specific track inputs.
|
||||
|
||||
. Right-click the "Playtime" track and all xref:key-concepts.adoc#column-track[column tracks] and choose menu:Save tracks as track template...[], saving the new track template as "Playtime.RTrackTemplate".
|
||||
. Whenever you want to start with this custom Playtime instance in a new project, right-click the track control panel, choose
|
||||
. In new projects, you can now right-click the track control panel and choose menu:Insert track from template[] to insert your custom "Playtime" track template.
|
||||
|
||||
Done! You immediately get a fresh Playtime instance with your favorite settings, including all columns.
|
||||
|
||||
== An action to make this approach more streamlined
|
||||
|
||||
The downside of this approach is that you can't use the beloved image:screenshots/playtime-toolbar-icon.png[Playtime,width=50, pdfwidth=8mm] button to add Playtime, because this one still creates the Playtime default instance, not your custom one.
|
||||
|
||||
This is where the action xref:reaper-actions.adoc#show-hide-custom-playtime[] comes into play. You can add a toolbar button for this action:
|
||||
|
||||
. Right-click an empty area of the desired toolbar and choose menu:Customize toolbar...[]
|
||||
. Press btn:[Add...]
|
||||
. Search for action "Helgobox/Playtime: Show/hide custom Playtime" and double-click it
|
||||
. Press btn:[OK]
|
||||
|
||||
The default icon for this button is image:screenshots/playtime-custom-toolbar-icon.png[Playtime,width=50, pdfwidth=8mm]. When you press it, it looks for a track template called "Playtime" and loads it.
|
||||
|
||||
No default shortcut is assigned to this action, but you can assign your own in REAPER menu menu:Actions[Show action list...]. For example, you could remove the kbd:[Shift+Cmd/Ctrl+P] shortcut from the xref:reaper-actions.adoc#show-hide-playtime[] action and instead assign it to this action.
|
||||
@@ -0,0 +1,5 @@
|
||||
= Configuration files
|
||||
|
||||
In addition to the xref:helgobox::configuration-files.adoc[general configuration files], Playtime maintains the following ones:
|
||||
|
||||
`Helgoboss/Playtime/settings.json`:: Contains global configuration that affects all Playtime instances.
|
||||
@@ -0,0 +1 @@
|
||||
= Further concepts
|
||||
@@ -0,0 +1,45 @@
|
||||
= General
|
||||
|
||||
[#pdc]
|
||||
== Plugin delay compensation (PDC)
|
||||
|
||||
FX (an effect or instrument) may add latency to a track due to internal processing. This can happen even with FX that's not on the track itself, but somewhere downstream in the signal flow, e.g. on the master track.
|
||||
|
||||
REAPER and Playtime apply plug-in delay compensation (PDC) in order to fix the timing. That means they start processing content ahead of time in order to make up for the latency. PDC ensures that all tracks stay perfectly synchronized by delaying other tracks to match the plugin's latency. This prevents timing issues and maintains phase alignment in your project, ensuring accurate playback and mixing.
|
||||
|
||||
[#latency-compensation]
|
||||
== Latency compensation during recording
|
||||
|
||||
When recording in DAWs, it is important to account for certain types of latencies. Playtime compensates or doesn't compensate latencies during recording, depending on a multitude of factors. Here's the overview:
|
||||
|
||||
|===
|
||||
|Input monitoring|Start timing|Kind|Compensation|Comment
|
||||
|
||||
|Off|Immediately|Any|Off|
|
||||
|
||||
|Off|Quantized|Audio|Audio output latency + audio input latency|
|
||||
|
||||
|Off|Quantized|MIDI (normal)|Audio output latency + block size (new)|
|
||||
|
||||
|Off|Quantized|MIDI (overdub)|Audio output latency + block size + PDC read-ahead (new)|Results not too good when using high buffer sizes, but okay for now.
|
||||
|
||||
|On|Any|Audio|Audio input latency|
|
||||
|
||||
|On|Any|MIDI (any)|Off|
|
||||
|===
|
||||
|
||||
=== When does this matter?
|
||||
|
||||
In general, those things should only matter when using high buffer sizes, since only then the delays introduced by latency become musically sensible.
|
||||
|
||||
=== Why compensate output latency only if input monitoring is off?
|
||||
|
||||
When input monitoring is off::
|
||||
If you don't enable input monitoring in the DAW (or in Playtime, it's the same), Playtime assumes that you are using some kind of zero-latency monitoring. In case of audio, this might be direct monitoring via audio interface or just listening to the instrument/voice itself. In case of MIDI, this might be an external hardware synthesizer with Local Mode being On or no monitoring at all (just pressing the keys at the right moment).
|
||||
+
|
||||
In that case, what counts in terms of timing is the actual key press (keyboard), strum (guitar), beat (drums), etc. This needs output latency compensation!
|
||||
|
||||
When input monitoring is on::
|
||||
If you enable input monitoring in the DAW, Playtime assumes that the player adjusts his playing according to what he hears coming out from the DAW and expects that this is the timing that ends up in the recording.
|
||||
+
|
||||
This means that output latency compensation is not necessary. Having input monitoring on in the DAW is usually only bearable when using low buffer sizes, otherwise it's super confusing.
|
||||
@@ -0,0 +1,136 @@
|
||||
= Matrix concepts
|
||||
|
||||
[[cell]]
|
||||
== Cell
|
||||
|
||||
A _cell_ is a broad term that can refer to a xref:key-concepts.adoc#slot[], a xref:key-concepts.adoc#column[], a xref:key-concepts.adoc#row[], or the entire xref:key-concepts.adoc#matrix[].
|
||||
|
||||
While it may seem like a concept exclusive to Playtime's xref:user-interface.adoc[], it is not limited to that context.
|
||||
|
||||
[[active-cell]]
|
||||
== Active cell
|
||||
|
||||
In a xref:key-concepts.adoc#matrix[], there's always exactly one <<cell>> that is considered the currently _active_ one. It is then possible to carry out certain actions on this cell, for example using the xref:realearn-targets.adoc[].
|
||||
|
||||
One way to _activate_ a cell is to select it in the xref:user-interface.adoc[]. Vice versa, the selection in the user interface usually follows the currently active cell.
|
||||
|
||||
By default, a _slot cell_ is also _activated_ just by <<trigger-slot,triggering>> it. This can be changed by setting the matrix property xref:user-interface/inspector/matrix/playback.adoc#inspector-matrix-activate-slot-on-trigger[].
|
||||
|
||||
[[trigger-slot]]
|
||||
== Trigger a slot
|
||||
|
||||
_Triggering a slot_ is an action carried out on a xref:key-concepts.adoc#slot[] that can have one of the following results, depending on the current slot contents and play state:
|
||||
|
||||
* Start slot playback
|
||||
* Stop slot playback
|
||||
* Start slot recording
|
||||
* Stop slot recording
|
||||
|
||||
A slot can be triggered either by pressing kbd:[Enter] in the xref:user-interface.adoc[] or from a controller (see ReaLearn xref:realearn::targets/playtime/slot-transport-action.adoc[]).
|
||||
|
||||
Triggering also takes the xref:user-interface/inspector/column/playback.adoc#inspector-column-trigger-mode[] and xref:user-interface/inspector/clip.adoc#inspector-clip-velocity-sensitivity[] into account.
|
||||
|
||||
[[control-unit]]
|
||||
== Control unit
|
||||
|
||||
A _control unit_ represents a xref:realearn::key-concepts.adoc#controller[] connected to a certain xref:key-concepts.adoc#matrix[Playtime matrix]. The concept is most important for xref:key-concepts.adoc#grid-controller[grid controllers] because they have special features within Playtime, most importantly <<control-unit-scrolling,scrolling>> through the matrix and displaying a corresponding <<control-unit-frame>> in the xref:user-interface.adoc[].
|
||||
|
||||
One control unit always corresponds to a one xref:realearn::key-concepts.adoc#unit[ReaLearn unit] within the same xref:helgobox::key-concepts.adoc#instance[] as the xref:key-concepts.adoc#matrix[Playtime matrix].
|
||||
|
||||
A control unit has the following properties:
|
||||
|
||||
Name::
|
||||
Usually corresponds to the name of the connected xref:realearn::key-concepts.adoc#managed-controller[], e.g. "Launchpad". The name is currently not visible in Playtime, but might be displayed as part of the <<control-unit-frame>> in the future.
|
||||
|
||||
Color::
|
||||
The color of the control unit is derived from the color of the xref:realearn::key-concepts.adoc#managed-controller[]. You can see the color "in action" by looking at the <<control-unit-frame>>.
|
||||
|
||||
Size::
|
||||
The number of columns and rows available on the controller. For example, in case of Launchpads, it's usually 8 columns and 8 rows.
|
||||
+
|
||||
The size of the control unit is provided by xref:realearn::further-concepts/compartment.adoc#custom-data[] of the xref:realearn::key-concepts.adoc#main-compartment[] within the xref:realearn::key-concepts.adoc#unit[ReaLearn unit] representing this control unit:
|
||||
+
|
||||
[cols="m,1,1"]
|
||||
|===
|
||||
| Variable | Type | Description
|
||||
|
||||
| playtime.control_unit.column_count
|
||||
| Integer
|
||||
| Number of available columns
|
||||
|
||||
| playtime.control_unit.row_count
|
||||
| Integer
|
||||
| Number of available rows
|
||||
|===
|
||||
+
|
||||
[source,lua]
|
||||
.Example in Lua
|
||||
----
|
||||
custom_data = {
|
||||
playtime = {
|
||||
control_unit = {
|
||||
column_count = 8,
|
||||
row_count = 8,
|
||||
},
|
||||
},
|
||||
},
|
||||
----
|
||||
|
||||
[[control-unit-scroll-position]] Current scroll position::
|
||||
The address of the top-left visible slot. See <<control-unit-scrolling>>.
|
||||
|
||||
[[control-unit-scrolling]]
|
||||
== Control unit scrolling
|
||||
|
||||
When connecting a xref:key-concepts.adoc#grid-controller[] to Playtime, it reflects the contents of the xref:key-concepts.adoc#matrix[]. It often happens that the matrix is larger than the size of the controller grid. In that case, it's important to be able to scroll.
|
||||
|
||||
[[control-unit-frame]]
|
||||
== Control unit frame
|
||||
|
||||
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/dialogs/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.
|
||||
|
||||
The count-in length can be adjusted in by right-clicking the xref:user-interface/toolbar.adoc#toolbar-metronome[] button and adjusting xref:user-interface/dialogs/tempo-settings-dialog.adoc#tempo-settings-count-in[].
|
||||
|
||||
Here's a video showing this way of recording:
|
||||
|
||||
video::sMckj_gsqh0[youtube, list=PL0bFMT0iEtAgjbtAN-lp6d_-vLA_YUP8O]
|
||||
|
||||
[[feature-tempo-detection]]
|
||||
== 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, list=PL0bFMT0iEtAgjbtAN-lp6d_-vLA_YUP8O]
|
||||
@@ -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].
|
||||
@@ -0,0 +1,37 @@
|
||||
= Installation
|
||||
|
||||
At first, please follow the xref:helgobox::installation.adoc[installation instructions for Helgobox], the add-on that contains Playtime.
|
||||
|
||||
== Playtime main toolbar button
|
||||
|
||||
After installing Helgobox, the easiest way to access Playtime is by using the convenient image:screenshots/playtime-toolbar-icon.png[Playtime,width=50, pdfwidth=8mm] button in REAPER's main toolbar.
|
||||
|
||||
You can add this button very easily by doing this:
|
||||
|
||||
. Select menu:Extensions[Helgobox > Show welcome screen]
|
||||
. Check "Add Playtime button to toolbar"
|
||||
|
||||
image::helgobox::screenshots/welcome-dialog.png[width=500]
|
||||
|
||||
== Alternatives
|
||||
|
||||
If you don't like that button, here are a few alternatives.
|
||||
|
||||
TIP: Manually removing the image:screenshots/playtime-toolbar-icon.png[Playtime,width=50, pdfwidth=8mm] button from the main toolbar is not going to work: You will have it back the next time you start REAPER.
|
||||
In order to remove the button permanently, open above-mentioned welcome screen and disable the checkbox!
|
||||
|
||||
=== Start directly via action
|
||||
|
||||
Playtime provides the action xref:reaper-actions.adoc#show-hide-playtime[], which you can invoke from the REAPER action list or via menu:Extensions[Helgobox > Playtime > Show/hide Playtime].
|
||||
In the action list, you can also assign your preferred keyboard shortcut.
|
||||
The default is kbd:[Shift+Cmd/Ctrl+P].
|
||||
|
||||
=== Add the button to another toolbar
|
||||
|
||||
You can add the image:screenshots/playtime-toolbar-icon.png[Playtime,width=50, pdfwidth=8mm] Playtime button to your own toolbar like this:
|
||||
|
||||
. Right-click the toolbar and choose menu:Customize toolbar...[]
|
||||
. Click btn:[Add...] (should open the REAPER action list)
|
||||
. Search for the action xref:reaper-actions.adoc#show-hide-playtime[] and double-click it.
|
||||
|
||||
That's it! you should now see the button in your custom toolbar.
|
||||
@@ -0,0 +1,29 @@
|
||||
= Introduction
|
||||
|
||||
include::helgobox::partial$intro-header.adoc[]
|
||||
|
||||
|===
|
||||
|Last update of text: |`2025-03-15 (v2.18.0)`
|
||||
|Last update of screenshots: |`2025-03-15 (v2.18.0)`
|
||||
|===
|
||||
|
||||
== What is Playtime?
|
||||
|
||||
link:https://www.helgoboss.org/projects/playtime[Playtime] is a powerful and versatile *session view* or *clip launcher* made specifically for the DAW link:https://www.reaper.fm[REAPER]. It is designed as a creative instrument for recording and triggering both audio and MIDI clips, making it ideal for *live performances*, *improvisation*, *jamming*, *looping* and *sketching arrangements*.
|
||||
|
||||
As part of the link:https://www.helgoboss.org/projects/helgobox[Helgobox] plug-in,
|
||||
Playtime integrates seamlessly with REAPER by leveraging its unique native-speed extension API. This deep integration provides a smoother and more efficient user experience compared to using REAPER alongside other DAWs.
|
||||
|
||||
For a more detailed introduction to Playtime and a shiny presentation of its features, visit the link:https://www.helgoboss.org/projects/playtime[Playtime website].
|
||||
|
||||
== About this document
|
||||
|
||||
This reference provides a detailed guide to Playtime's usage, concepts, and features.
|
||||
|
||||
[TIP]
|
||||
====
|
||||
|
||||
**You also might want to check out the link:https://github.com/helgoboss/helgobox/wiki/Playtime-Home[Playtime Wiki]!**
|
||||
|
||||
It is the place for user-contributed content and contains links to other related content, such as tutorials and guides.
|
||||
====
|
||||
@@ -0,0 +1,287 @@
|
||||
= Key concepts
|
||||
|
||||
This section offers brief descriptions of Playtime's key concepts.
|
||||
An understanding of these concepts is beneficial for effectively using Playtime, regardless of which features you plan to utilize.
|
||||
|
||||
== Linear vs. non-linear music production
|
||||
|
||||
[[linear-production]]
|
||||
=== Linear music production
|
||||
|
||||
In _linear_ music production, tracks are arranged sequentially along a timeline, supporting structured composition and precise arrangement from start to finish.
|
||||
|
||||
[[non-linear-production]]
|
||||
=== Non-linear music production
|
||||
|
||||
In _non-linear_ music production, such as in jamming and sketching, musical elements are arranged in flexible, often loop-based sections that can be triggered or layered in any order, allowing for spontaneous creativity and experimentation.
|
||||
|
||||
Playtime's purpose is to add one popular flavor of _non-linear_ music production to REAPER: Music production via <<session-view>>.
|
||||
|
||||
[[session-view]]
|
||||
== Session view / Clip launcher
|
||||
|
||||
A _session view_ or _clip launcher_ is a user interface tailored to <<non-linear-production>> where musical elements are arranged in a grid of rows and columns.
|
||||
Each cell typically holds a single musical element, and users can trigger, loop, and record these elements in real time, often for live performance or experimental composition.
|
||||
|
||||
Playtime is a session view.
|
||||
|
||||
[[matrix]]
|
||||
== Matrix
|
||||
|
||||
In Playtime, a _matrix_ is the top-level structure.
|
||||
It is fundamentally a two-dimensional grid of <<slot,slots>> that hold <<clip,clips>>, arranged in <<column,columns>> and <<row,rows>>.
|
||||
On a broader level, the matrix functions as a container, comparable to a project in REAPER, and includes various settings.
|
||||
|
||||
Each <<instance>> can load a single Playtime matrix.
|
||||
By default, it contains no matrix, so it must be created explicitly.
|
||||
This approach ensures that Helgobox instances dedicated solely to xref:realearn::introduction.adoc[ReaLearn] don't consume any Playtime-related CPU or memory resources - you only "pay for what you use".
|
||||
|
||||
[[instance]]
|
||||
== Playtime Instance
|
||||
|
||||
The terms _Playtime Instance_ and xref:helgobox:ROOT:key-concepts.adoc#instance[Helgobox instance] are interchangeable — they both refer to the same concept.
|
||||
|
||||
[[column]]
|
||||
== Column
|
||||
|
||||
In Playtime, a _column_ refers to a group of <<slot,slots>>, typically arranged vertically.
|
||||
|
||||
A column is linked to a <<column-track>>, which is used for playing back the <<clip,clips>> it contains.
|
||||
|
||||
TIP: There's one exception: If you load an external matrix preset into Helgobox and an associated column track doesn't exist in the REAPER project, the column will be track-less and unusable for playback.
|
||||
In this case, you'll need to manually reassign a track in the xref:user-interface/inspector.adoc[].
|
||||
|
||||
By default, only one slot in a column plays at a time, but Playtime also allows for simultaneous playback of multiple slots in the same column.
|
||||
|
||||
In practice, each column typically represents a single musical instrument or vocal track.
|
||||
|
||||
[[column-track]]
|
||||
== Column track
|
||||
|
||||
A _column_ track is a normal REAPER track linked to a Playtime <<column>>.
|
||||
|
||||
[[row]]
|
||||
== Row
|
||||
|
||||
Like a <<column>>, a _row_ refers to a group of <<slot,slots>>, but arranged horizontally.
|
||||
|
||||
A row is always associated with a <<scene>>, so the terms are often used interchangeably.
|
||||
|
||||
In practice, each row often represents a part within a larger song structure.
|
||||
|
||||
[[slot]]
|
||||
== Slot
|
||||
|
||||
In Playtime, a _slot_ is a fixed position in the matrix that can hold <<clip,clips>> and can be played back or stopped.
|
||||
Each slot functions as a mini audio player.
|
||||
|
||||
Typically, a slot contains a single clip, but Playtime allows multiple clips in a slot to play back simultaneously.
|
||||
In such cases, the <<clip-start-timing>> of each individual clip is relevant.
|
||||
The slot itself does not contain any settings.
|
||||
|
||||
[[clip]]
|
||||
== Clip
|
||||
|
||||
In Playtime, a _clip_ is a container that holds a snippet of audio or MIDI, referred to as the <<source>>, and can be configured in various ways.
|
||||
It is somewhat comparable to an _item_ in REAPER.
|
||||
|
||||
In practice, a clip is often a short, beat-aligned loop.
|
||||
|
||||
[[source]]
|
||||
== Source
|
||||
|
||||
In Playtime, a _source_ represents the raw media data.
|
||||
|
||||
Audio source::
|
||||
An _audio_ source contains link:https://en.wikipedia.org/wiki/Digital_audio[audio] data.
|
||||
Technically, it is not more than a reference to an audio file, e.g. a WAV or MP3 file.
|
||||
All audio formats supported by REAPER are also supported by Playtime.
|
||||
|
||||
MIDI source::
|
||||
A _MIDI_ source contains link:https://en.wikipedia.org/wiki/MIDI[MIDI] data.
|
||||
It is typically used to control instruments.
|
||||
Technically, it is an in-memory representation of a sequence of MIDI events, similar to REAPER's _in-project MIDI sources_.
|
||||
|
||||
[[scene]]
|
||||
== Scene
|
||||
|
||||
In Playtime, a _scene_ denotes a segment within a larger song structure.
|
||||
It corresponds to a <<row>>.
|
||||
|
||||
Each scene features a play button that triggers playback for all <<slot, slots>> in that row.
|
||||
|
||||
By default, a scene encompasses all <<slot, slots>> of the row.
|
||||
However, Playtime allows a <<column>> to opt out of scene playback if desired.
|
||||
|
||||
[[matrix-sequence]]
|
||||
== Matrix sequence
|
||||
|
||||
A _matrix sequence_ is a recording of interactions with the <<matrix>>.
|
||||
|
||||
Playtime lets you record matrix interactions into a sequence.
|
||||
Each sequence is saved as part of the matrix.
|
||||
Later, you can play it back, directly in Playtime.
|
||||
|
||||
CAUTION: Matrix sequence playback always uses the current matrix settings, slots and clips for playback.
|
||||
Therefore,subsequent playbacks don't necessarily sound the same!
|
||||
|
||||
Most importantly, a sequence can be "written down" to a REAPER <<arrangement>> at any time: All clips occurrences are placed on <<column-track, column tracks>> as REAPER items.
|
||||
This is often done at the point in the song creation process, when you are satisfied with the sequence and want to transition to linear arranging on the <<reaper-project-timeline>>.
|
||||
|
||||
[[arrangement]]
|
||||
== Arrangement
|
||||
|
||||
In Playtime, an _arrangement_ typically refers to a set of REAPER items on the <<column-track, column tracks>> of the matrix, making it suitable for <<linear-production>>.
|
||||
|
||||
An arrangement can be created ...
|
||||
|
||||
[loweralpha]
|
||||
. ... by writing a <<matrix-sequence>> to the arrangement
|
||||
. ... by exporting clips, scenes or the complete matrix to the arrangement
|
||||
. ... by placing items there on your own
|
||||
|
||||
Playtime is not necessary to play the arrangement back.
|
||||
You can share a REAPER project containing an arrangement written via Playtime with someone who doesn't own Playtime, and they will still able to play it back!
|
||||
In practice, however, it's recommended to keep Playtime as part of the project, to freely switch between <<session-view>> and <<arrangement>>.
|
||||
|
||||
[[clip-start-timing]]
|
||||
== Clip start timing
|
||||
|
||||
The clip _start timing_ is a configuration property for a <<clip>>.
|
||||
Because of its importance, it's mentioned here already as a key concept.
|
||||
|
||||
The _start timing_ decides when a clip actually starts to be played back, after you have triggered its playback.
|
||||
|
||||
We distinguish between _quantized_ start timings and _immediate_ start timing.
|
||||
|
||||
Quantized start timing::
|
||||
By default, the start timing is *1 bar*, which means that the clip will start playing at the beginning of the next bar.
|
||||
This is what makes everything in-sync. You can change that to arbitrary <<quantization, quantizations>>, such as *2 quarter notes* or *3 bars*.
|
||||
|
||||
Immediate start timing::
|
||||
Alternatively, you can use the start timing *Immediately*, which makes the clip start playing instantly when you trigger it. Of course, that means *you* are now in charge to get the timing right.
|
||||
|
||||
You can set the start timing for xref:user-interface/inspector/matrix/playback.adoc#inspector-matrix-start-timing[the complete matrix] and override it on xref:user-interface/inspector/column/playback.adoc#inspector-column-start-timing[column] or xref:user-interface/inspector/clip.adoc#inspector-clip-start-timing[clip] level.
|
||||
|
||||
[[clip-stop-timing]]
|
||||
== Clip stop timing
|
||||
|
||||
The clip _stop timing_ is very similar to the <<clip-start-timing>> but determines when the clip actually stops after you have triggered its stop. In most cases, it makes sense to leave it at its default settings xref:user-interface/inspector/clip.adoc#inspector-clip-stop-timing-like-start-timing[].
|
||||
|
||||
== Loop vs. one-shot
|
||||
|
||||
[[loop]]
|
||||
=== Loop
|
||||
|
||||
In Playtime, a _loop_ is a <<clip>> that is _looped_, which simply means that it seamlessly repeats.
|
||||
|
||||
[[one-shot]]
|
||||
=== One-shot
|
||||
|
||||
In Playtime a _one-shot_ is a <<clip>> that plays only once, that is, it's not looped.
|
||||
|
||||
[[bar]]
|
||||
== Bar
|
||||
|
||||
A _bar_, also known as a _measure_, is a section of music that contains a specific number of <<beat,beats>>, as defined by the <<time-signature>>.
|
||||
It helps organize the music into manageable parts, making it easier for musicians to read and perform.
|
||||
For example, in a 4/4 time signature, each bar has four beats.
|
||||
|
||||
[[beat]]
|
||||
== Beat
|
||||
|
||||
A _beat_ is the basic unit of time in music, serving as the rhythmic foundation for a piece.
|
||||
It’s what you tap your foot to when listening to a song.
|
||||
Beats are grouped together in <<bar,bars>> and can vary in length and speed, creating different feels and tempos in music.
|
||||
|
||||
[[time-signature]]
|
||||
== Time signature
|
||||
|
||||
A _time signature_ in music is a way to show how <<beat, beats>> are grouped in a piece.
|
||||
It tells you how many <<beat,beats>> are in each <<bar>> and which type of note gets one beat.
|
||||
For example, in a 3/4 time signature, there are three beats per bar, and each beat is a quarter note.
|
||||
It helps musicians understand the rhythm and feel of the music.
|
||||
|
||||
[[time-signature-nominator]]
|
||||
=== Nominator
|
||||
|
||||
The top number of a time signature (the *3* in 3/4) is called _nominator_ and shows the number of beats per measure.
|
||||
|
||||
[[time-signature-denominator]]
|
||||
The bottom number (the *4* in 3/4) is called _denominator_ and shows the type of note that counts as one <<beat>>.
|
||||
|
||||
[[in-sync]]
|
||||
== In sync
|
||||
|
||||
In the context of rhythmical music, _in sync_ means that everything is synchronized and the timing aligns correctly. When you play <<loop, loops>> in Playtime, you typically want them to be _in sync_ with each other and with all other rhythmical material on the <<timeline, reference timeline>>.
|
||||
|
||||
To achieve this synchronization, the following conditions must be met:
|
||||
|
||||
[[in-sync-correct-section]] Correct start and end position::
|
||||
The start and end positions of the <<clip>> must align *precisely* with a musical <<beat>> in the <<source>>.
|
||||
|
||||
[[in-sync-beat-aligned-playback]] Beat-aligned start of playback::
|
||||
<<clip>> playback must start exactly on a beat of the <<timeline>>.
|
||||
|
||||
[[in-sync-playback-with-same-tempo]] Playback with the same tempo::
|
||||
The <<clip,clips>> must be played back in the same tempo (or a multiple of it).
|
||||
|
||||
When using Playtime's default settings, all conditions are automatically met:
|
||||
|
||||
* <<in-sync-playback-with-same-tempo>> is met because by default, Playtime starts and stops a clip _recording_ quantized to a 1-bar grid (see xref:clip-start-timing[]).
|
||||
* <<in-sync-beat-aligned-playback>> is met because by default, Playtime starts and stops clip _playback_ quantized to a 1-bar grid (see xref:clip-start-timing[]).
|
||||
* <<in-sync-playback-with-same-tempo>> is met because by default, Playtime adjusts the tempo of a clip to the current project tempo (see xref:user-interface/inspector/clip.adoc#inspector-clip-sync-to-project-tempo[]).
|
||||
|
||||
[TIP]
|
||||
====
|
||||
Concerning the first condition:
|
||||
|
||||
* In most cases, you want the start point to align exactly with the downbeat, and the length to be precisely 1 bar (or a multiple of it).
|
||||
* If the start point is located between beats or the length falls between bars, the loop will be _out of sync_.
|
||||
* By selecting a <<quantization,quantized>> start/stop timing, such as "1 bar", Playtime ensures that your loop's start point and length are perfectly beat-aligned with sample precision!
|
||||
* If you choose immediate start/stop timing, it's your responsibility to ensure that the start point and length are musically appropriate.
|
||||
Achieving perfect timing with a button or foot pedal press is close to impossible.
|
||||
====
|
||||
|
||||
[[quantization]]
|
||||
== Quantization
|
||||
|
||||
A _quantization_ in Playtime defines when an event should occur, such as the start of clip playback or the stop of a recording.
|
||||
It divides the <<timeline>> into equal time intervals, ensuring that the event occurs only at the beginning of each interval.
|
||||
|
||||
A quantization is typically expressed as a <<time-signature>>.
|
||||
|
||||
.Quantization examples
|
||||
====
|
||||
|
||||
3/4:: The length of each interval will be 3 quarter notes.
|
||||
1/8:: The length of each interval will be 1 eight's note.
|
||||
1/1:: The length of each interval will be 1 bar.
|
||||
4/1:: The length of each interval will be 4 bars.
|
||||
====
|
||||
|
||||
[[timeline]]
|
||||
== Timeline
|
||||
|
||||
In Playtime, a _timeline_ refers to the concept of time divided into bars and beats, featuring a continuously advancing playhead and a current tempo.
|
||||
|
||||
One <<matrix>> has exactly one _reference timeline_ at a given point in time.
|
||||
<<quantization, Quantized>> events such as start of <<clip>> playback are aligned to this reference timeline.
|
||||
|
||||
[[reaper-project-timeline]]
|
||||
=== REAPER project timeline
|
||||
|
||||
When the REAPER project is playing, Playtime uses the _REAPER project timeline_ as reference.
|
||||
That is, it starts and stop playback according to the bar/beat division and tempo of the REAPER project.
|
||||
|
||||
[[playtime-timeline]]
|
||||
=== Playtime timeline
|
||||
|
||||
When the REAPER project is stopped, Playtime uses its own timeline as reference, which however, shares a common tempo with the <<reaper-project-timeline>>.
|
||||
|
||||
[[grid-controller]]
|
||||
== Grid controller
|
||||
|
||||
A _grid controller_ is a unique class of hardware controller designed specifically for clip launching. A well-known example is the Novation Launchpad. A grid controller feature a grid of pads with LEDs arranged in rows and columns — exactly like Playtime's xref:key-concepts.adoc#matrix[]!
|
||||
|
||||
Playtime includes out-of-the-box support for many popular grid controllers. xref:supported-controllers.adoc[Here] you can find the current list of supported devices.
|
||||
@@ -0,0 +1,10 @@
|
||||
= ReaLearn targets
|
||||
|
||||
[[feature-realearn]]
|
||||
xref:realearn::introduction.adoc[ReaLearn] is the controller integration tool at the heart of Helgobox that enables Playtime's _haptic_ features. It drives the xref:user-interface/toolbar.adoc#toolbar-show-hide-midi-triggers[MIDI trigger] functionality, integrates the xref:key-concepts.adoc#grid-controller[grid controllers], and allows you to craft your own controller experiences. ReaLearn is the engine behind it all!
|
||||
|
||||
In simple terms, a xref:realearn::key-concepts.adoc#target[ReaLearn target] defines what happens when you press a button on your controller. ReaLearn provides a wide variety of such xref:realearn::targets.adoc[targets], including a xref:realearn::targets/playtime.adoc[specialized set of targets] tailored for Playtime. Most of these targets even support xref:realearn::key-concepts.adoc#feedback[], enabling features like LED lighting or display updates. That gives you the flexibility to create highly customized controller integrations for Playtime!
|
||||
|
||||
For a glimpse of what's possible, take a look at Playtime's xref:usage/grid-controllers.adoc[grid controller support]. This functionality isn't hard-coded into Playtime, it's entirely implemented through xref:realearn::further-concepts/compartment.adoc#compartment-preset[ReaLearn compartment presets].
|
||||
|
||||
All targets are described xref:realearn::targets/playtime.adoc[here].
|
||||
@@ -0,0 +1,12 @@
|
||||
= REAPER actions
|
||||
|
||||
Playtime provides the following REAPER actions in addition to the xref:helgobox::reaper-actions.adoc[general actions].
|
||||
|
||||
[[show-hide-playtime]] Helgobox/Playtime: Show/hide Playtime::
|
||||
If there's no Helgobox instance with a Playtime matrix in the current project, this action adds one and shows the matrix. If there is one already, it shows or hides the app window. This doesn't completely unload the app, it really just hides the window.
|
||||
|
||||
+
|
||||
The default shortcut is kbd:[Shift+Cmd/Ctrl+P].
|
||||
|
||||
[[show-hide-custom-playtime]] Helgobox/Playtime: Show/hide custom Playtime::
|
||||
Works like <<show-hide-playtime>> with the following difference: If there's no Helgobox instance with a Playtime matrix in the current project, it looks for a top-level track template called "Playtime" and adds it to the project. See xref:advanced-usage-scenarios/start-custom-playtime.adoc[].
|
||||
@@ -0,0 +1,72 @@
|
||||
= Supported controllers
|
||||
|
||||
:primary-functions-supported: Clip-related functions are supported.
|
||||
:support-mostly-complete: Support is mostly complete.
|
||||
:non-assigned-buttons: Notable functions which are currently not supported
|
||||
|
||||
At the moment, Playtime has built-in support for the following controllers. More controllers will follow over time. If your controller is not supported yet, feel free to create a new discussion in link:https://github.com/helgoboss/helgobox/discussions/categories/ideas?discussions_q=category%3AIdeas+label%3Aplaytime+is%3Aopen+sort%3Adate_created[Playtime's idea tracker].
|
||||
|
||||
== Akai APC Key 25
|
||||
|
||||
{support-mostly-complete}
|
||||
|
||||
.{non-assigned-buttons}
|
||||
NOTE: Device
|
||||
|
||||
== Akai APC Key 25 mk2
|
||||
|
||||
{support-mostly-complete}
|
||||
|
||||
.{non-assigned-buttons}
|
||||
NOTE: Device
|
||||
|
||||
== Akai APC mini (experimental)
|
||||
|
||||
{support-mostly-complete}
|
||||
|
||||
.{non-assigned-buttons}
|
||||
NOTE: Device
|
||||
|
||||
== Akai APC mini mk2
|
||||
|
||||
{support-mostly-complete}
|
||||
|
||||
.{non-assigned-buttons}
|
||||
NOTE: Device
|
||||
|
||||
== Novation Launchpad Mini mk3
|
||||
|
||||
{support-mostly-complete}
|
||||
|
||||
.{non-assigned-buttons}
|
||||
NOTE: Drums, Keys, User
|
||||
|
||||
== Novation Launchpad Pro mk2
|
||||
|
||||
{primary-functions-supported}
|
||||
|
||||
.{non-assigned-buttons}
|
||||
NOTE: Note, Device, User, Volume, Pan, Sends
|
||||
|
||||
== Novation Launchpad Pro mk3
|
||||
|
||||
{primary-functions-supported}
|
||||
|
||||
.{non-assigned-buttons}
|
||||
NOTE: Note, Chord, Custom, Sequencer, Projects, Volume, Pan, Sends, Device,
|
||||
Swing, Tempo, Capture MIDI, Patterns, Steps, Pattern Settings, Velocity, Probability,
|
||||
Mutation, Micro Step, Print to Clip
|
||||
|
||||
== Novation Launchpad X
|
||||
|
||||
{primary-functions-supported}
|
||||
|
||||
.{non-assigned-buttons}
|
||||
NOTE: Note, Custom, Volume, Pan, Send A, Send B, Capture MIDI
|
||||
|
||||
== Novation Launchpad mk1
|
||||
|
||||
{primary-functions-supported}
|
||||
|
||||
.{non-assigned-buttons}
|
||||
NOTE: vol, pan, snd A, snd B
|
||||
@@ -0,0 +1,19 @@
|
||||
= Basic usage
|
||||
|
||||
Let's get familiar with the basics!
|
||||
|
||||
A typical Playtime usage scenario, from beginning to end, looks like this:
|
||||
|
||||
. xref:usage/prepare.adoc[]
|
||||
. xref:usage/create.adoc[]
|
||||
. xref:usage/play.adoc[]
|
||||
. xref:usage/grid-controllers.adoc[]
|
||||
. xref:usage/adjust.adoc[]
|
||||
. xref:usage/structure.adoc[]
|
||||
. xref:usage/arrangement.adoc[]
|
||||
. xref:usage/render.adoc[]
|
||||
|
||||
In the following sections, we will learn step by step how to do this.
|
||||
|
||||
TIP: This guide assumes that you already installed Playtime.
|
||||
If not, head to the xref:installation.adoc[] page!
|
||||
@@ -0,0 +1,33 @@
|
||||
= Adjust clips
|
||||
|
||||
Now that you know how to create and play clips, you might want change them a bit.
|
||||
|
||||
== Editing the clip source
|
||||
|
||||
If you are dealing with MIDI clips, you can easily edit the clip xref:key-concepts.adoc#source[]:
|
||||
|
||||
. Double-click the xref:user-interface/matrix-area.adoc#slot-cell-content[] area of the desired slot. This should open the clip source in REAPER's MIDI editor.
|
||||
. Make changes in the MIDI editor. Any change should be applied right away if the clip is currently playing.
|
||||
. You can also use the playback controls of REAPER's MIDI editor or arrange view. As soon as you use them, the clip will stop playing in Playtime and you can play it within REAPER instead. As long as the MIDI editor is open, the clip is mirrored by a regular REAPER MIDI item positioned on the xref:key-concepts.adoc#column-track[].
|
||||
. Close the MIDI editor.
|
||||
|
||||
Any change can be undone using Playtime's xref:helgobox::app/user-interface/title-bar.adoc#title-bar-undo[] function.
|
||||
|
||||
[[feature-clip-settings]]
|
||||
== Adjusting clip properties
|
||||
|
||||
Each clip has certain properties in addition to its actual source, which you can adjust.
|
||||
|
||||
=== 1. Select the slot
|
||||
|
||||
Select the desired slot by clicking the xref:user-interface/matrix-area.adoc#slot-cell-content[] area.
|
||||
|
||||
This will show the properties of the clip within that slot in the xref:user-interface/inspector/clip.adoc[] on the right side.
|
||||
|
||||
=== 2. Adjust clip properties
|
||||
|
||||
Now go ahead and check what properties xref:user-interface/inspector/clip.adoc[are available] in the inspector.
|
||||
|
||||
We will just take the example of the *pitch* property. Find the xref:user-interface/inspector/clip.adoc#inspector-clip-pitch[] setting, move your mouse over the number *0.00* semitones and use your mouse wheel or any other xref:helgobox::app/user-interface/general.adoc#drag-field[] interaction to change the pitch. For example, to *12.00* semitones, which corresponds to one octave.
|
||||
|
||||
The new pitch will be applied right away or according to the xref:user-interface/inspector/matrix/playback.adoc#inspector-matrix-start-timing[matrix start timing].
|
||||
@@ -0,0 +1,105 @@
|
||||
= Create an arrangement
|
||||
|
||||
Maybe you want to use Playtime for live improvisation only, in which case the basic usage guide would end here. But chances are, you want to go further than that and turn your Playtime matrix into a proper REAPER arrangement at some point.
|
||||
|
||||
This is also important if you xref:advanced-usage-scenarios/control-with-items.adoc[control Playtime with items] or xref:advanced-usage-scenarios/meta-clips.adoc[use meta clips] and your goal is to include the output of Playtime in the final rendering. Unlike traditional instrument plug-ins, Playtime doesn't participate in rendering! footnote:direct-output[It's possible that this will be added in the future by introducing a new mode of operation.] Which is why you first need to turn the output into a conventional REAPER arrangement.
|
||||
|
||||
There are two ways of building an arrangement.
|
||||
|
||||
[[feature-export-to-arrangement]]
|
||||
== Export matrix content
|
||||
|
||||
You can export parts of the matrix to the arrangement directly:
|
||||
|
||||
=== 1. Make a time selection (optional)
|
||||
|
||||
You can influence the start and length of the export on the timeline by creating a time selection on the REAPER timeline. If you don't do that, the length will correspond to the longest exported clip.
|
||||
|
||||
=== 2. Export the desired content
|
||||
|
||||
* If you want to export all clips in the matrix, right-click the xref:user-interface/matrix-area.adoc#matrix-cell[] and choose xref:user-interface/menus/matrix-menu.adoc#matrix-export-to-arrangement[].
|
||||
* If you want to export all clips in a particular column, right-click the corresponding xref:user-interface/matrix-area.adoc#column-cell[] and choose xref:user-interface/menus/column-menu.adoc#column-export-to-arrangement[].
|
||||
* If you want to export all clips in a particular row, right-click the corresponding xref:user-interface/matrix-area.adoc#row-cell[] and choose xref:user-interface/menus/row-menu.adoc#row-export-to-arrangement[].
|
||||
* If you want to export the primary clip of a slot, right-click the corresponding xref:user-interface/matrix-area.adoc#slot-cell[] and choose xref:user-interface/menus/slot-menu.adoc#slot-export-primary-clip-to-arrangement[].
|
||||
|
||||
.Quickly export different parts of your song
|
||||
[TIP]
|
||||
====
|
||||
Maybe you have named the matrix rows so that they represent different parts of your song, such as _Verse_, _Chorus_, _Bridge_ and _Solo_. Now you want to export those parts like this:
|
||||
|
||||
* 2x Verse
|
||||
* 1x Chorus
|
||||
* 1x Bridge
|
||||
* 1x Verse
|
||||
* 1x Solo
|
||||
* 2x Chorus
|
||||
|
||||
Making such an export can be done very quickly just by using keyboard keys:
|
||||
|
||||
. Select the _Verse_ row cell
|
||||
. Press key kbd:[A] 2 times (the shortcut for exporting the selected cell to the arrangement)
|
||||
. Select the _Chorus_ row cell
|
||||
. Press key kbd:[A] 1 time
|
||||
. ...
|
||||
|
||||
This works nicely because after exporting a row, Playtime automatically moves the play cursor or the complete time selection to the right.
|
||||
====
|
||||
|
||||
[[feature-arrangement]]
|
||||
== Record and write a sequence
|
||||
|
||||
Another way to export an arrangement is to record a Playtime performance and write the result to the arrangement. This is done using Playtime's built-in xref:user-interface/toolbar.adoc#toolbar-matrix-sequencer[]:
|
||||
|
||||
=== 1. Start recording a new matrix sequence
|
||||
|
||||
Press the xref:user-interface/toolbar.adoc#toolbar-record-matrix-sequence[] button in the xref:user-interface/toolbar.adoc#toolbar-matrix-sequencer[] of the xref:user-interface/toolbar.adoc[].
|
||||
|
||||
This will always create a new sequence and never overwrite an existing one, so you can press this anytime.
|
||||
|
||||
=== 2. Perform your song within Playtime
|
||||
|
||||
Playtime will record all play and stop interactions with your matrix.
|
||||
|
||||
=== 3. Stop recording the sequence
|
||||
|
||||
Press the xref:user-interface/toolbar.adoc#toolbar-record-matrix-sequence[] button again to stop recording.
|
||||
|
||||
=== 4. Play sequence (optional)
|
||||
|
||||
If you want, you can play the sequence directly within Playtime by pressing the xref:user-interface/toolbar.adoc#toolbar-play-stop-matrix-sequence[].
|
||||
|
||||
=== 5. Write the sequence to the arrangement
|
||||
|
||||
If you are satisfied, you can write the sequence to the REAPER tracks by pressing xref:user-interface/toolbar.adoc#toolbar-write-to-arrangement[].
|
||||
|
||||
== The translation from clips to items
|
||||
|
||||
What happens in both cases is that Playtime translates its xref:key-concepts.adoc#clip[clips] into REAPER items.
|
||||
|
||||
Ideally, the items - when played back by REAPER - should sound exactly as the clips in Playtime. If you detect deviations, please open a bug report in the link:https://github.com/helgoboss/helgobox/issues[Helgobox issue tracker].
|
||||
|
||||
[TIP]
|
||||
====
|
||||
The resulting items are played back by REAPER alone. Those are conventional REAPER items, there is no connection to Playtime anymore!
|
||||
|
||||
That also means that if you share the REAPER project file with other people, they won't need a Playtime installation to play back the arrangement.
|
||||
====
|
||||
|
||||
|
||||
.Deep-dive: Translation from clips to items
|
||||
****
|
||||
When translating clips to items, Playtime may set track, item or take properties.
|
||||
|
||||
Here are some noteworthy translations:
|
||||
|
||||
Free item positioning::
|
||||
Playtime enables free item positioning for a track as soon as it detects that some items written to the same track would overlap in time. This usually happens when two clips play at the same time on the same track. Not enabling it would lead to a hard-to-see overlap.
|
||||
|
||||
Time base::
|
||||
If the clip is configured to xref:user-interface/inspector/clip.adoc#inspector-clip-sync-to-project-tempo[synchronize to the project tempo], it chooses item time base *Beats (auto-stretch at tempo changes)*, because this reflects how Playtime itself would behave when changing the tempo. With this mode, REAPER may automatically create stretch markers.
|
||||
+
|
||||
If the clip is configured to *not* synchronize to the project tempo, it chooses item timebase *Time* (if start timing is xref:user-interface/inspector/clip.adoc#inspector-clip-start-timing-immediately[]) or *Beats (position only)* (the the start timing is quantized), because those settings resemble Playtime's clip playing behavior best.
|
||||
|
||||
Play rate::
|
||||
For audio clips, the play rate is always set to the ratio between the clip's xref:user-interface/inspector/clip.adoc#inspector-clip-tempo[] and the project tempo.
|
||||
****
|
||||
@@ -0,0 +1,163 @@
|
||||
= Create clips
|
||||
|
||||
Playtime is all about xref:key-concepts.adoc#clip[clips], small snippets of audio or MIDI that you can freely play together with other clips to compose a larger musical piece.
|
||||
|
||||
Before we can play a clip, we need to create one. Let's do this!
|
||||
|
||||
== 1. Create a column
|
||||
|
||||
At first, we need to make some space for the clip within the xref:key-concepts.adoc#matrix[].
|
||||
Press the xref:user-interface/matrix-area.adoc#matrix-add-column[] button on the right of xref:user-interface/matrix-area.adoc#matrix-cell-settings[] to add a new xref:key-concepts.adoc#column[].
|
||||
|
||||
You should then see a new column named "Column 1" with empty slots that can take our new clip.
|
||||
|
||||
[TIP]
|
||||
.Column track
|
||||
====
|
||||
This didn't just create a new column, it also created a new REAPER track with the same name, the so-called xref:key-concepts.adoc#column-track[]. Playtime will play clips within this column through that track.
|
||||
====
|
||||
|
||||
IMPORTANT: Exactly as in REAPER, Playtime columns don't have a type. They can always play both, audio and MIDI clips. The xref:user-interface/track-area.adoc#track-panel-input-type-indicator[] looks a bit as if the column would have a special type, but it really just reflects the input currently selected for recording clips.
|
||||
|
||||
.Alternatives
|
||||
****
|
||||
Use matrix templates::
|
||||
Instead of creating the column manually, you could also have started with a template by pressing xref:user-interface/matrix-area.adoc#matrix-mixed-template-button[] in the xref:user-interface/matrix-area.adoc#matrix-template-panel[], for example.
|
||||
|
||||
Import existing tracks::
|
||||
Maybe you have existing tracks already that you want to use as xref:key-concepts.adoc#column-track[column tracks]. In that case, select them, right-click xref:user-interface/matrix-area.adoc#matrix-cell-settings[] and choose xref:user-interface/menus/matrix-menu.adoc#matrix-insert-column-for-each-selected-track[].
|
||||
****
|
||||
|
||||
== 2. Create a clip
|
||||
|
||||
There are many ways to create a new clip. Let's explore the most common ones.
|
||||
|
||||
[[feature-import]]
|
||||
=== Import an existing audio or MIDI file
|
||||
|
||||
Maybe you have an existing audio or MIDI file somewhere on your computer. Simply drag it from your favorite file manager or from REAPER's media explorer onto one of the empty slots! See xref:user-interface/matrix-area.adoc#slot-drag-and-drop[] for details.
|
||||
|
||||
.Alternatives
|
||||
****
|
||||
Use file picker::
|
||||
You can pick the file using Playtime's own file picker by right-clicking an empty slot and pressing xref:user-interface/menus/slot-menu.adoc#slot-import-files[].
|
||||
****
|
||||
|
||||
[[import-item]]
|
||||
=== Import an existing REAPER item
|
||||
|
||||
Maybe you have an existing item on a REAPER track that you want to turn into a Playtime clip.
|
||||
|
||||
. Select the item
|
||||
. Right-click an empty slot and choose xref:user-interface/menus/slot-menu.adoc#slot-import-selected-item[]
|
||||
|
||||
This does more than just importing the audio file or MIDI data from the item: It also translates many of the item's properties, such as the item cut and pitch, to Playtime clip properties.
|
||||
|
||||
|
||||
[[create-empty-midi-clip]]
|
||||
=== Create an empty MIDI clip
|
||||
|
||||
If you want to start entering MIDI notes from scratch, simply double-click the slot. This will create an empty MIDI clip with the length of 1 bar.
|
||||
|
||||
[[feature-record]]
|
||||
=== Record a clip
|
||||
|
||||
Playtime offers plenty of ways to record clips directly. The most common one is to record a xref:key-concepts.adoc#loop[] of rhythmic material while Playtime is playing.
|
||||
|
||||
In this example, we are going to record an audio loop to a click:
|
||||
|
||||
==== 1. Start playback
|
||||
|
||||
Start playback in Playtime by pressing the xref:user-interface/toolbar.adoc#toolbar-start-stop-playback[] button in the transport section of the toolbar or simply by pressing the kbd:[Space] key. The xref:user-interface/toolbar.adoc#toolbar-visual-metronome[] in the middle of the Playtime text logo should start running.
|
||||
|
||||
==== 2. Turn on metronome
|
||||
|
||||
Turn on the metronome by pressing the xref:user-interface/toolbar.adoc#toolbar-metronome[] button in the tempo section of the toolbar. You should now hear the metronome clicking.
|
||||
|
||||
[[choose-track-input]]
|
||||
==== 3. Choose track input
|
||||
|
||||
Press xref:user-interface/track-area.adoc#track-panel-input[] in the track panel below the column in order to choose the audio input channel(s) from which you want to record.
|
||||
|
||||
TIP: If you don't see the input section, increase the height of the track panel a bit by grabbing the resize handle above the track panels and dragging it up.
|
||||
|
||||
==== 4. Arm track
|
||||
|
||||
Press the round xref:user-interface/track-area.adoc#track-panel-arm[] button. It should turn red and record buttons should appear in all empty slots of that column.
|
||||
|
||||
CAUTION: If you record from a microphone and don't wear a headphone, you probably should turn off input monitoring by pressing xref:user-interface/track-area.adoc#track-panel-input-monitoring-off[]. Otherwise, you might hear loud feedback.
|
||||
|
||||
==== 5. Get ready
|
||||
|
||||
At this point, you can try making some noise. Do you see something in the xref:user-interface/track-area.adoc#track-panel-volume[meter]? Good! Now, get ready for recording!
|
||||
|
||||
==== 6. Start recording
|
||||
|
||||
Shortly after the start of a bar, press the xref:user-interface/matrix-area.adoc#slot-cell-record[] button in an empty slot. You should see a count-down which will reach zero exactly when the next bar starts. The record button will turn red and Playtime will record whatever you play.
|
||||
|
||||
[[stop-recording]]
|
||||
==== 7. Stop recording
|
||||
|
||||
Press the red xref:user-interface/matrix-area.adoc#slot-cell-record[] button again to indicate that you want to stop recording. The button will start to blink and turn into a xref:user-interface/matrix-area.adoc#slot-cell-trigger[play button] as soon as the next bar starts. Playtime will play back your recording repeatedly.
|
||||
|
||||
==== 8. Be happy
|
||||
|
||||
Congratulations, you have recorded your first xref:key-concepts.adoc#loop[]. If you didn't get the timing right, don't worry. After some attempts, you will get the hang of it. Plus, Playtime offers quite a few ways to make recording clips less stressful.
|
||||
|
||||
.Variations
|
||||
****
|
||||
There are many variations of above recording procedure. Let's look at a few aspects that you can do differently:
|
||||
|
||||
Record MIDI instead of audio::
|
||||
If you want to record MIDI, choose a MIDI device in step <<choose-track-input>>. You probably also want to put an instrument on the FX chain of the xref:key-concepts.adoc#column-track[] by pressing the xref:user-interface/track-area.adoc#track-panel-fx-chain[] button, or route the track to an external MIDI synthesizer by pressing the xref:user-interface/track-area.adoc#track-panel-routing[] button.
|
||||
|
||||
Record a one-shot instead of a loop::
|
||||
If you want to record material that should play just once without being repeated, open the xref:user-interface/inspector/matrix/recording.adoc[] and uncheck the xref:user-interface/inspector/matrix/recording.adoc#inspector-matrix-recording-looped[] checkbox. If you do that, the recorded material will *not* immediately be played back after recording.
|
||||
|
||||
Stop recording automatically::
|
||||
Find it too stressful having to press the stop button *while* you are playing? Often we know in advance how many beats or bars we want to record. You can tell Playtime by opening the xref:user-interface/inspector/matrix/recording.adoc[], enabling xref:user-interface/inspector/matrix/recording.adoc#inspector-matrix-limit-recording-length[] and choosing the desired xref:user-interface/inspector/matrix/recording.adoc#inspector-matrix-recording-length[]. After that, Playtime will stop clip recordings automatically.
|
||||
|
||||
Wait longer until the recording starts::
|
||||
Find it too stressful having to grab your instrument within the short time period after pressing the record button? One way to get more time is to adjust the xref:key-concepts.adoc#clip-start-timing[]. For example, you could set xref:user-interface/inspector/matrix/playback.adoc#inspector-matrix-start-timing[] to *4 bars* instead of just *1 bar*. Or you do it just for one specific column.
|
||||
+
|
||||
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. 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.
|
||||
+
|
||||
. Press the xref:user-interface/toolbar.adoc#toolbar-show-hide-midi-triggers[] button in the toolbar. This should reveal a small MIDI trigger area on the right sight of the xref:user-interface/toolbar.adoc#toolbar-smart-record[] button.
|
||||
. Press that MIDI trigger area. It should turn red.
|
||||
. Press the MIDI foot switch connected to your MIDI keyboard. Playtime should pick it up. If not, see xref:user-interface/toolbar.adoc#midi-trigger-troubleshooting[].
|
||||
. Press the MIDI foot switch to start recording.
|
||||
. Press it again to stop recording.
|
||||
+
|
||||
TIP: You can hide the MIDI trigger areas at any time by pressing the xref:user-interface/toolbar.adoc#toolbar-show-hide-midi-triggers[] button again. They will remain active!
|
||||
|
||||
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. In that case, you can do a xref:further-concepts/matrix.adoc#feature-tempo-detection[].
|
||||
|
||||
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:
|
||||
|
||||
* Recording should start immediately, no need to wait until the next bar.
|
||||
* Playtime shouldn't time-stretch your clip later on when changing the project playback tempo.
|
||||
|
||||
+
|
||||
--
|
||||
You can simply achieve that by setting the xref:user-interface/inspector/matrix/playback.adoc#inspector-matrix-start-timing[] in the xref:user-interface/inspector/matrix/playback.adoc[] to xref:user-interface/inspector/clip.adoc#inspector-clip-start-timing-immediately[]. If you want to use this behavior just for a specific column, you can xref:user-interface/inspector/column/playback.adoc#inspector-column-start-timing[override this setting on column level] instead!
|
||||
--
|
||||
|
||||
|
||||
MIDI overdub::
|
||||
Maybe you already have a MIDI clip and want to slowly add some notes by playing them on your keyboard:
|
||||
+
|
||||
. Select the desired (looped) MIDI clip by clicking the xref:user-interface/matrix-area.adoc#slot-cell-content[] area.
|
||||
. In the xref:user-interface/inspector/clip.adoc[] on the right side, press the xref:user-interface/inspector/clip.adoc#inspector-clip-overdub[] button. The clip should start playing repeatedly.
|
||||
. Play some MIDI notes on your music keyboard. They will be recorded into the playing clip. You will hear them on the next repetition.
|
||||
. When you are done, press the same button again.
|
||||
|
||||
TIP: Many of the above aspects can be combined, which gives you a maximum of flexibility.
|
||||
****
|
||||
@@ -0,0 +1,28 @@
|
||||
= Use grid controllers
|
||||
|
||||
[[feature-grid]]
|
||||
.Grid controllers are optional!
|
||||
TIP: You don't need a xref:key-concepts.adoc#grid-controller[] to use Playtime! However, using one adds a tactile dimension to the clip-launching experience, making Playtime feel more like a distinct musical instrument. It’s a fun way to enhance interaction and creativity.
|
||||
|
||||
If your xref:key-concepts.adoc#grid-controller[] is on the xref:supported-controllers.adoc[list of supported devices], here's how you set it up:
|
||||
|
||||
. Ensure that Playtime is running and you see its xref:user-interface.adoc[].
|
||||
. If the device is already connected to the USB port, **disconnect it** and wait a few seconds!
|
||||
. **Connect** the device to the USB port.
|
||||
. After waiting for a few seconds, Playtime should show a green success notice at the bottom of the screen.
|
||||
|
||||
After that, the device should visually reflect the contents of the Playtime xref:key-concepts.adoc#matrix[] and you should be able to control the matrix with it.
|
||||
|
||||
In addition, the device should now appear in the xref:realearn:ROOT:user-interface/settings-dialog.adoc#controllers[ReaLearn controllers] section of the xref:helgobox::app/user-interface/settings-dialog.adoc[]. This is also the place where you can manually set up the device in case it was not auto-detected.
|
||||
|
||||
== Troubleshooting
|
||||
|
||||
If the device is not detected, please proceed as follows:
|
||||
|
||||
* Execute REAPER action xref:realearn::reaper-actions.adoc#auto-detect-controllers-with-logging[] and copy the output to the clipboard.
|
||||
* If the controller is not in the xref:supported-controllers.adoc[list of supported devices], create a https://github.com/helgoboss/helgobox/discussions/categories/ideas[feature request], naming your controller and including the copied info.
|
||||
* If the controller is in the list, write an email to info@helgoboss.org, naming your controller and including the copied info.
|
||||
|
||||
== Related videos
|
||||
|
||||
video::tkyNCGOVumw[youtube, list=PL0bFMT0iEtAgjbtAN-lp6d_-vLA_YUP8O]
|
||||
@@ -0,0 +1,136 @@
|
||||
= Play clips
|
||||
|
||||
As soon as you have some clips in the matrix, you can play them!
|
||||
|
||||
Unlike items on the REAPER timeline, you can start and stop clips totally freely. There are no rules, which makes Playtime very suitable for improvisation.
|
||||
|
||||
[[feature-play]]
|
||||
== Playing clips using the app
|
||||
|
||||
The obvious way to play a clip is to use your mouse: Press the xref:user-interface/matrix-area.adoc#slot-cell-trigger[] button of its containing xref:key-concepts.adoc#slot[]:
|
||||
|
||||
* If Playtime's transport was stopped before you pressed the button (see xref:user-interface/toolbar.adoc#toolbar-start-stop-playback[] button in the toolbar), Playtime and your clip should start playing immediately.
|
||||
* If Playtime's transport was playing already, the clip should start playing according to the configured xref:key-concepts.adoc#clip-start-timing[], by default at the next bar.
|
||||
|
||||
You can stop the clip by pressing the xref:user-interface/matrix-area.adoc#slot-cell-trigger[same button] again, which now appears as a stop icon. The clip should stop playing according to the configured xref:key-concepts.adoc#clip-stop-timing[].
|
||||
|
||||
.Playtime pipes audio and MIDI directly to the column tracks!
|
||||
NOTE: Playtime "magically" plays the clip's MIDI or audio content directly through the xref:key-concepts.adoc#column-track[column track] of the containing column. It doesn't use any sends for this! In fact, the xref:helgobox::plug-in.adoc[] itself doesn't produce any audio or MIDI data at all. footnote:direct-output[It's possible that this will be added in the future by introducing a new mode of operation.]
|
||||
|
||||
TIP: You can xref:helgobox::app/user-interface/keyboard-shortcuts.adoc#esc[hide] or xref:helgobox::app/user-interface/title-bar.adoc#title-bar-close-window[close] the app window at any time. This will not affect playback or recording. Playtime also works without its user interface!
|
||||
|
||||
[[feature-keys]]
|
||||
== Playing clips using a MIDI keyboard
|
||||
|
||||
Playtime allows you to play your clips by pressing keys on your MIDI keyboard:
|
||||
|
||||
. Press the xref:user-interface/toolbar.adoc#toolbar-show-hide-midi-triggers[] button. This should reveal small MIDI trigger areas on the right side of each slot cell.
|
||||
. Press the MIDI trigger area of the slot that you want to play. It should turn red.
|
||||
. Press a key on your MIDI keyboard. Playtime should pick it up. If not, see xref:user-interface/toolbar.adoc#midi-trigger-troubleshooting[].
|
||||
. Press the key once. The clip should start playing.
|
||||
. Press the key again. The clip should stop.
|
||||
|
||||
|
||||
.Variations
|
||||
****
|
||||
Play as long as you press the key::
|
||||
By default, pressing the key toggles between _playing_ and _stopped_. You can change that, for example on column level, by setting the column property xref:user-interface/inspector/column/playback.adoc#inspector-column-trigger-mode[] to xref:user-interface/inspector/column/playback.adoc#inspector-column-trigger-mode-momentary[] in the xref:user-interface/inspector/column.adoc[]. Then pressing the key down will start playback and releasing it will stop playback. This goes very well with xref:key-concepts.adoc#clip-start-timing[] xref:user-interface/inspector/clip.adoc#inspector-clip-start-timing-immediately[].
|
||||
|
||||
Restart when pressing the key again::
|
||||
Another xref:user-interface/inspector/column/playback.adoc#inspector-column-trigger-mode[] is xref:user-interface/inspector/column/playback.adoc#inspector-column-trigger-mode-retrigger[]: Tapping the key once will start playback and tapping it again will trigger a restart.
|
||||
|
||||
Play with different velocities::
|
||||
Maybe you want to play the clip with a lower volume when hitting the key softly and with a higher volume when hitting it hard. You can achieve this and fine-tune the effect by adjusting the matrix property xref:user-interface/inspector/matrix/playback.adoc#inspector-matrix-velocity-sensitivity[] in the xref:user-interface/inspector/matrix.adoc[]. It is of course also adjustable on xref:user-interface/inspector/column/playback.adoc#inspector-column-velocity-sensitivity[column] and xref:user-interface/inspector/clip.adoc#inspector-clip-velocity-sensitivity[clip] level.
|
||||
****
|
||||
|
||||
|
||||
.Suitable for finger drumming!
|
||||
[NOTE]
|
||||
====
|
||||
Triggering clips via MIDI happens in real-time! As with any other instrument plug-in that you use in REAPER, the latency depends on the block size set in REAPER.
|
||||
|
||||
So if you use xref:key-concepts.adoc#clip-start-timing[] xref:user-interface/inspector/clip.adoc#inspector-clip-start-timing-immediately[] and set the block size in REAPER menu:Options[Preferences/Settings... > Device] low enough (e.g. 256 samples), you will not perceive any delay between pressing the key and hearing the sound.
|
||||
====
|
||||
|
||||
.Is Playtime a sampler?
|
||||
[TIP]
|
||||
====
|
||||
When playing Playtime via MIDI, it works a bit like a sampler. But instead of playing single tones, it is optimized to trigger complete musical _phrases_. And not just audio phrases, also MIDI sequences.
|
||||
|
||||
You are basically working on a higher level. Each of the triggered phrases in turn can trigger samplers or synthesizers ... or even xref:advanced-usage-scenarios/meta-clips.adoc[Playtime itself].
|
||||
====
|
||||
|
||||
== Playing multiple clips
|
||||
|
||||
The fun starts when playing multiple clips simultaneously.
|
||||
|
||||
=== Columns in exclusive mode
|
||||
|
||||
By default, playback within one column is limited to just one slot. We call this xref:user-interface/inspector/column/playback.adoc#inspector-column-exclusive-mode[], because one slot has the exclusive right of playing.
|
||||
|
||||
.Exclusive mode
|
||||
====
|
||||
Let's say you have clip A in the first column cell and clip B in the second column cell.
|
||||
|
||||
. Trigger clip A and wait until it started playing
|
||||
. Now, trigger clip B
|
||||
|
||||
You will see that clip A stops and clip B takes over.
|
||||
====
|
||||
|
||||
*The consequence is:* If you want to play multiple slots simultaneously, you would need to create a new column. Musically, that makes a lot of sense. It is very common in clip launchers to have one column per instrument. And one instrument can normally only play one phrase at a time. Alternating between those phrases is often exactly what people want.
|
||||
|
||||
[[feature-non-exclusive-columns]]
|
||||
=== Columns in non-exclusive mode
|
||||
|
||||
Playtime is a quite relaxed fellow and allows you to opt out of the exclusive mode. The easiest way to do this is to press the xref:user-interface/matrix-area.adoc#column-cell-exclusive-mode[] button in the xref:user-interface/matrix-area.adoc#column-cell[].
|
||||
|
||||
After disabling exclusive mode, you can play multiple clips within that column, as your heart desires.
|
||||
|
||||
=== Playing in sync
|
||||
|
||||
Usually when playing multiple clips within a clip launcher, one expects those clips to play perfectly xref:key-concepts.adoc#in-sync[in sync] with each other. This "perfectly in sync" is by default given in Playtime, but it all depends on how each of the clips is configured.
|
||||
|
||||
If you have messed with xref:key-concepts.adoc#clip-start-timing[], xref:user-interface/inspector/clip.adoc#inspector-clip-start-position[], xref:user-interface/inspector/clip.adoc#inspector-clip-length[] or xref:user-interface/inspector/clip.adoc#inspector-clip-sync-to-project-tempo[], your clips might get out of sync. If this happens, and you don't know why, revisit xref:key-concepts.adoc#in-sync[] to deepen your understanding.
|
||||
|
||||
=== Row and column transport buttons
|
||||
|
||||
You can play all clips in a row at once by pressing the xref:user-interface/matrix-area.adoc#row-cell-play-scene[] button at the very left.
|
||||
|
||||
You can permanently stop all clips in a column at once by pressing the xref:user-interface/matrix-area.adoc#column-cell-stop[] button in the xref:user-interface/matrix-area.adoc#column-cell[] at the top of the column. Double-clicking this button stops the clips abruptly.
|
||||
|
||||
You can permanently stop all clips in the complete matrix at once by pressing the xref:user-interface/matrix-area.adoc#matrix-cell-stop[] button in the xref:user-interface/matrix-area.adoc#matrix-cell[] at the top-left of the matrix area. Double-clicking this button stops the clips abruptly.
|
||||
|
||||
== Starting and stopping Playtime playback
|
||||
|
||||
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 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 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
|
||||
****
|
||||
Conducting a count-in by tapping tempo::
|
||||
A neat way to start playback with a new tempo is to stop playback and repeatedly press the xref:user-interface/toolbar.adoc#toolbar-tap-tempo[] button in a "1, 2, 3, 4"-style count-in.
|
||||
****
|
||||
|
||||
== Playing together with the REAPER arrangement
|
||||
|
||||
=== Starting playback within REAPER
|
||||
|
||||
Maybe you already have some items on the REAPER timeline that you want to improvise over using Playtime. All you need to do for this is to start playback within REAPER:
|
||||
|
||||
. Click somewhere into the REAPER main window in order to switch focus to REAPER.
|
||||
. Press kbd:[Space] to start REAPER playback.
|
||||
|
||||
Playtime will now play synchronized to the arrangement. Changing the REAPER play cursor position will automatically retrigger Playtime's clip so that they stay in sync.
|
||||
|
||||
=== Full transport synchronization
|
||||
|
||||
Maybe you would like to always play together with the REAPER arrangement, even if you start playback within Playtime:
|
||||
|
||||
. Set xref:user-interface/inspector/matrix/playback.adoc#inspector-matrix-transport-sync[] in the xref:user-interface/inspector/matrix.adoc[] to *Full*
|
||||
. Press kbd:[Space] within Playtime.
|
||||
|
||||
REAPER should start playing as well.
|
||||
@@ -0,0 +1,60 @@
|
||||
= Prepare
|
||||
|
||||
At first, we need to do some preparations.
|
||||
|
||||
== 1. Start REAPER
|
||||
|
||||
Playtime runs within REAPER, so at first you need to start REAPER.
|
||||
|
||||
== 2. Set up your audio and MIDI devices
|
||||
|
||||
If you haven't done it already, you should let REAPER know which audio and MIDI devices you are planning to use with it, because Playtime will use them as well!
|
||||
|
||||
. Open the REAPER preferences via menu:Options[Preferences/Settings...]
|
||||
. In the section menu:Audio[Device], configure your audio input and output.
|
||||
. In the section menu:Audio[MIDI Inputs], configure your MIDI input devices, such as music keyboards.
|
||||
. In the section menu:Audio[MIDI Outputs], configure your MIDI output devices, such as hardware synthesizers.
|
||||
|
||||
If you want to know more about this process, please consult the one and only link:https://www.reaper.fm/userguide.php[REAPER user guide].
|
||||
|
||||
[[fire-up-playtime]]
|
||||
== 3. Fire up Playtime
|
||||
|
||||
Press the image:screenshots/playtime-toolbar-icon.png[Playtime,width=50, pdfwidth=8mm] button in REAPER's main toolbar, or use any of the alternative ways to start Playtime (described in xref:installation.adoc[]).
|
||||
After pressing the button, you should see the Playtime window with an empty xref:key-concepts.adoc#matrix[]:
|
||||
|
||||
.Playtime window with empty matrix
|
||||
image::generated/screenshots/main/main-screen-empty.png[]
|
||||
|
||||
You can press kbd:[Shift+Cmd/Ctrl+P] to show/hide the Playtime window at any time.
|
||||
|
||||
At this point, you could directly continue with xref:usage/create.adoc[], but I strongly recommend to read the following deep dive, as it will improve your understanding of how Playtime works!
|
||||
|
||||
.Deep dive: Playtime button
|
||||
****
|
||||
Pressing the button actually does multiple things in one go:
|
||||
|
||||
. Create a new REAPER track named "Playtime" at the very top of the project.
|
||||
. Arm the track and set its input to "MIDI: All: All channels".
|
||||
. Add an xref:helgobox::key-concepts.adoc#instance[instance] of the Helgobox plug-in to the track's FX chain.
|
||||
. Open the xref:helgobox::app.adoc[] associated with that new Helgobox instance.
|
||||
. Navigate to the Playtime section of the App.
|
||||
. Create a xref:key-concepts.adoc#matrix[Playtime Matrix] in this Helgobox instance.
|
||||
|
||||
|
||||
If you wanted, you could do all of those steps manually instead:
|
||||
|
||||
* Right-click REAPER's track control panel and choose menu:Insert virtual instrument on new track...[]
|
||||
* Double-click instrument plug-in "VSTi: Helgobox - ReaLearn & Playtime (Helgoboss)"
|
||||
* Optionally rename the track to "Playtime"
|
||||
* In the xref:helgobox::plug-in/user-interface.adoc[Helgobox plug-in window], press menu:Menu[Show app].
|
||||
* In the xref:helgobox::app/user-interface.adoc[Helgobox app window], press the image:screenshots/playtime-toolbar-icon.png[Playtime,width=30] button in the xref:helgobox::app/user-interface/navigation-bar.adoc[] on the left.
|
||||
* Press the button btn:[Create a Playtime Matrix]
|
||||
|
||||
What we learn from that:
|
||||
|
||||
* Playtime is built into Helgobox, which is an instrument plug-in, so there needs to be an instance of it somewhere in your project. *→ This is a good thing because it means that you can xref:usage/play.adoc[play] it like an instrument!*
|
||||
* A new Helgobox instance doesn't have a xref:key-concepts.adoc#matrix[Playtime Matrix] by default.
|
||||
You first need to create one.
|
||||
*→ This means Playtime doesn't consume any CPU and memory if you don't use it!*
|
||||
****
|
||||
@@ -0,0 +1,12 @@
|
||||
= Render
|
||||
|
||||
At the end, you probably want to render/mix-down/export the arrangement xref:usage/arrangement.adoc[created in the previous step] to an audio file.
|
||||
|
||||
|
||||
All you need to do is to use REAPER's built-in render functionality as usual:
|
||||
|
||||
. Open menu:File[Render...]
|
||||
. Change options if desired
|
||||
. Press the btn:[Render] button
|
||||
|
||||
That's it! Playtime doesn't change anything about the rendering process. In fact, it's not involved anymore at this point.
|
||||
@@ -0,0 +1,42 @@
|
||||
= Structure the song
|
||||
|
||||
Playtime's xref:user-interface/matrix-area.adoc[] suits itself for organizing the clips into a musical structure.
|
||||
|
||||
== Rename slots
|
||||
|
||||
Renaming a slot is as easy as selecting the xref:user-interface/matrix-area.adoc#slot-cell[] and pressing kbd:[F2], or right-clicking the cell and selecting xref:user-interface/menus/slot-menu.adoc#slot-rename-primary-clip[].
|
||||
|
||||
== Add more columns
|
||||
|
||||
You can add more columns, for example one column per instrument.
|
||||
|
||||
You can rename a column or its corresponding xref:key-concepts.adoc#column-track[] by selecting the xref:user-interface/matrix-area.adoc#column-cell[] and pressing kbd:[F2], or right-clicking the cell and selecting xref:user-interface/menus/column-menu.adoc#column-rename-column-or-track[].
|
||||
|
||||
== Drag and drop things
|
||||
|
||||
You can freely drag and drop slot contents or other things. Check out the following links to learn more about it:
|
||||
|
||||
* xref:user-interface/matrix-area.adoc#column-drag-and-drop[]
|
||||
* xref:user-interface/matrix-area.adoc#row-drag-and-drop[]
|
||||
* xref:user-interface/matrix-area.adoc#slot-drag-and-drop[]
|
||||
|
||||
== Add more rows
|
||||
|
||||
You can add more rows if you are running out of vertical space for your clips. Just press the xref:user-interface/matrix-area.adoc#matrix-add-row[] button or right-click a xref:user-interface/matrix-area.adoc#row-cell[] and choose xref:user-interface/menus/row-menu.adoc#row-insert-row-below[].
|
||||
|
||||
Renaming works just as with columns.
|
||||
|
||||
== Use colors to spice things up
|
||||
|
||||
There are two things in a xref:key-concepts.adoc#matrix[] that can get individual colors: Tracks and clips.
|
||||
|
||||
In order to change the color of a track, click the xref:user-interface/track-area.adoc#track-panel-label[] to select the track. Then change the color in the xref:user-interface/inspector/track.adoc[] on the right. This sets the color of the REAPER track.
|
||||
|
||||
In order to change the color of an individual clip, select the xref:user-interface/matrix-area.adoc#slot-cell[] and change the color in the xref:user-interface/inspector/clip.adoc[] on the right.
|
||||
|
||||
[[feature-scenes]]
|
||||
== Build scenes
|
||||
|
||||
One particular way to make use of rows of the matrix is to consider a row as a xref:key-concepts.adoc#scene[] - a part within a song. By organizing your clips into scenes, the scene column on the left of the matrix basically turns into a playlist for your song, which is very convenient if you want to xref:usage/arrangement.adoc[turn the song into an arrangement].
|
||||
|
||||
One function which greatly helps to build scenes (apart from drag-and-drop and copy-and-paste) is xref:user-interface/menus/row-menu.adoc#row-build-scene-from-currently-playing-clips[], which you can access by right-clicking the xref:user-interface/matrix-area.adoc#row-cell-label[] of an empty row.
|
||||
@@ -0,0 +1,41 @@
|
||||
= User interface
|
||||
|
||||
This section provides a detailed overview of all elements in Playtime's user interface.
|
||||
|
||||
== Main screen
|
||||
|
||||
Playtime's design centers around a single, large _main screen_, offering streamlined access to its most essential features.
|
||||
|
||||
.Main screen
|
||||
image::generated/screenshots/main/main-screen.png[]
|
||||
|
||||
== Main screen areas
|
||||
|
||||
The main screen is divided into distinct areas, each serving a specific purpose.
|
||||
|
||||
.Areas of the main screen
|
||||
image::generated/screenshots/main/main-screen-areas.png[]
|
||||
|
||||
xref:user-interface/title-bar.adoc[]::
|
||||
include::partial$user-interface/title-bar-desc.adoc[]
|
||||
|
||||
xref:user-interface/navigation-bar.adoc[]::
|
||||
include::partial$user-interface/nav-bar-desc.adoc[]
|
||||
|
||||
xref:user-interface/toolbar.adoc[]::
|
||||
include::partial$user-interface/toolbar-desc.adoc[]
|
||||
|
||||
xref:user-interface/content-panel.adoc[]::
|
||||
include::partial$user-interface/content-panel-desc.adoc[]
|
||||
|
||||
xref:user-interface/matrix-area.adoc[]::
|
||||
include::partial$user-interface/matrix-area-desc.adoc[]
|
||||
|
||||
xref:user-interface/track-area.adoc[]::
|
||||
include::partial$user-interface/track-area-desc.adoc[]
|
||||
|
||||
xref:user-interface/inspector.adoc[]::
|
||||
include::partial$user-interface/inspector-desc.adoc[]
|
||||
|
||||
xref:user-interface/info-panel.adoc[]::
|
||||
include::partial$user-interface/info-panel-desc.adoc[]
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
= Content panel
|
||||
|
||||
include::partial$user-interface/content-panel-desc.adoc[]
|
||||
|
||||
You can close the content panel by pressing the icon:close[] button on the left side, which appears as soon as your mouse hovers over the area.
|
||||
|
||||
include::partial$generated/elements/waveform-view.adoc[]
|
||||
|
||||
The waveform view shows only the relevant section of the actual audio file.
|
||||
Which part is relevant, is dictated by the clip properties xref:user-interface/inspector/clip.adoc#inspector-clip-source-cut-start[] and xref:user-interface/inspector/clip.adoc#inspector-clip-source-cut-length[].
|
||||
|
||||
If you set the clip properties xref:user-interface/inspector/clip.adoc#inspector-clip-start-position[] or xref:user-interface/inspector/clip.adoc#inspector-clip-length[], you will see start and end markers.
|
||||
@@ -0,0 +1,3 @@
|
||||
= Dialogs
|
||||
|
||||
Dialogs are small windows that are opened on demand.
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
= Arrangement writing mode dialog
|
||||
|
||||
This dialog opens when pressing the xref:user-interface/toolbar.adoc#toolbar-write-to-arrangement[] button in the title bar and the current arrangement is dirty. It gives you multiple options how to deal with the fact that there are already items in the arrangement.
|
||||
|
||||
image::generated/screenshots/main/arrangement-writing-mode.png[]
|
||||
|
||||
include::partial$generated/elements/arrangement-writing-mode/replace.adoc[]
|
||||
include::partial$generated/elements/arrangement-writing-mode/merge-at-cursor.adoc[]
|
||||
include::partial$generated/elements/arrangement-writing-mode/append.adoc[]
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
= Purchase & Activate dialog
|
||||
|
||||
This dialog opens when clicking the button xref:user-interface/title-bar.adoc#title-bar-purchase-playtime[].
|
||||
|
||||
image::generated/screenshots/main/purchase.png[]
|
||||
|
||||
include::partial$generated/elements/purchase/verify-license-key.adoc[]
|
||||
|
||||
If unlocking Playtime doesn't work, please write an email to info@helgoboss.org!
|
||||
|
||||
[NOTE]
|
||||
====
|
||||
The copy protection mechanism of Playtime is as unobtrusive as the one used in REAPER: No iLok, no online verification.
|
||||
Just a regular license key that is checked offline.
|
||||
|
||||
No need to worry that you run in demo mode when your gig comes up!
|
||||
====
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
= Sequences dialog
|
||||
|
||||
This dialog opens when pressing the xref:user-interface/toolbar.adoc#toolbar-matrix-sequence-picker[] button in the title bar.
|
||||
|
||||
image::generated/screenshots/main/sequences.png[]
|
||||
|
||||
Clicking on a sequence makes it the active sequence.
|
||||
|
||||
include::partial$generated/elements/sequences/edit.adoc[]
|
||||
|
||||
At the moment, all you can do here is to adjust its name.
|
||||
|
||||
include::partial$generated/elements/sequences/delete.adoc[]
|
||||
|
||||
You can undo this operation using Playtime's built-in undo function.
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
= Settings dialog
|
||||
|
||||
This dialog opens when pressing the xref:helgobox:ROOT:app/user-interface/title-bar.adoc#title-bar-settings[] button in the title bar and navigating to the Playtime section.
|
||||
|
||||
image::generated/screenshots/main/settings.png[]
|
||||
|
||||
== Appearance
|
||||
|
||||
include::partial$generated/elements/settings/show-control-unit-frames.adoc[]
|
||||
|
||||
See xref:further-concepts/matrix.adoc#control-unit-frame[].
|
||||
|
||||
include::partial$generated/elements/settings/show-column-numbers.adoc[]
|
||||
|
||||
Disabling this will give you more vertical space, but also hides the shortcut buttons such as xref:user-interface/matrix-area.adoc#column-cell-exclusive-mode[]. In that case, you can still change those things in the xref:user-interface/inspector/column.adoc[].
|
||||
|
||||
include::partial$generated/elements/settings/show-clip-activity.adoc[]
|
||||
include::partial$generated/elements/settings/show-cell-selection-as-crosshair.adoc[]
|
||||
include::partial$generated/elements/settings/show-hypothetical-play-cursor.adoc[]
|
||||
include::partial$generated/elements/settings/cell-color-position.adoc[]
|
||||
include::partial$generated/elements/settings/cell-progress-position.adoc[]
|
||||
|
||||
include::partial$generated/elements/settings/cell-width.adoc[]
|
||||
|
||||
include::partial$generated/elements/settings/cell-height.adoc[]
|
||||
|
||||
In addition, you might be interested in the xref:helgobox::app/user-interface/settings-dialog.adoc#settings-overall-size[] setting, located in the general appearance section.
|
||||
|
||||
== Engine
|
||||
|
||||
include::partial$generated/elements/settings/tempo-latency.adoc[]
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
= Tempo settings dialog
|
||||
|
||||
This dialog opens when right-clicking the xref:user-interface/toolbar.adoc#toolbar-metronome[] button in the title bar.
|
||||
It lets you adjust various tempo-related settings.
|
||||
|
||||
NOTE: The settings in here are not global!
|
||||
They are saved as part of the matrix and therefore together with the REAPER project.
|
||||
|
||||
image::generated/screenshots/main/tempo-settings.png[]
|
||||
|
||||
include::partial$generated/elements/tempo-settings/click-and-tap.adoc[]
|
||||
include::partial$generated/elements/tempo-settings/click-volume.adoc[]
|
||||
include::partial$generated/elements/tempo-settings/tap-volume.adoc[]
|
||||
include::partial$generated/elements/tempo-settings/count-in.adoc[]
|
||||
@@ -0,0 +1,3 @@
|
||||
= General usage
|
||||
|
||||
See xref:helgobox::app/user-interface/general.adoc[general usage] in the Helgobox Reference.
|
||||
@@ -0,0 +1,27 @@
|
||||
= Info panel
|
||||
|
||||
include::partial$user-interface/info-panel-desc.adoc[]
|
||||
|
||||
== Help
|
||||
|
||||
This tab displays helpful information about the item under the mouse.
|
||||
|
||||
== Stats
|
||||
|
||||
This tab displays information about the current state of the Playtime engine.
|
||||
|
||||
include::partial$generated/elements/info-panel/stats/tempo-buffer-size.adoc[]
|
||||
|
||||
See xref:user-interface/dialogs/settings-dialog.adoc#settings-tempo-latency[].
|
||||
|
||||
include::partial$generated/elements/info-panel/stats/pre-buffered-blocks-playing-min.adoc[]
|
||||
|
||||
include::partial$generated/elements/info-panel/stats/pre-buffered-blocks-playing-avg.adoc[]
|
||||
|
||||
include::partial$generated/elements/info-panel/stats/pre-buffered-blocks-playing-max.adoc[]
|
||||
|
||||
include::partial$generated/elements/info-panel/stats/pre-buffer-fallback-count.adoc[]
|
||||
|
||||
include::partial$generated/elements/info-panel/stats/pre-buffer-miss-count.adoc[]
|
||||
|
||||
include::partial$generated/elements/info-panel/warnings.adoc[]
|
||||
@@ -0,0 +1,11 @@
|
||||
= Inspector
|
||||
|
||||
include::partial$user-interface/inspector-desc.adoc[]
|
||||
|
||||
What exactly the inspector shows, depends on the current selection:
|
||||
|
||||
* xref:user-interface/inspector/matrix.adoc[]
|
||||
* xref:user-interface/inspector/column.adoc[]
|
||||
* xref:user-interface/inspector/row.adoc[]
|
||||
* xref:user-interface/inspector/slot.adoc[]
|
||||
* xref:user-interface/inspector/track.adoc[]
|
||||
+167
@@ -0,0 +1,167 @@
|
||||
= Clip inspector
|
||||
|
||||
include::partial$generated/elements/inspector/clip/quick-actions.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/overdub.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/quantize.adoc[]
|
||||
|
||||
See xref:user-interface/inspector/matrix/playback.adoc#inspector-matrix-midi-quantization-grid[].
|
||||
|
||||
[NOTE]
|
||||
====
|
||||
Playtime uses its own quantization algorithm, but it remembers the original event positions in a way that is compatible with REAPER.
|
||||
|
||||
If you open a MIDI clip quantized by Playtime in REAPER's MIDI editor, you will see that the MIDI events are quantized there as well, and you have the possibility to unquantize directly in the MIDI editor.
|
||||
|
||||
Vice versa, Playtime detects correctly if a clip has been quantized in REAPER's MIDI editor.
|
||||
That means you can use both quantization methods interchangeably!
|
||||
====
|
||||
|
||||
include::partial$generated/elements/inspector/clip/basics.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/name.adoc[]
|
||||
|
||||
TIP: Another way to change the sanem is to press kbd:[F2] when the slot is selected.
|
||||
|
||||
include::partial$generated/elements/inspector/clip/looped.adoc[]
|
||||
|
||||
See xref:key-concepts.adoc#loop[] and xref:key-concepts.adoc#one-shot[].
|
||||
|
||||
include::partial$generated/elements/inspector/clip/volume.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/pitch.adoc[]
|
||||
|
||||
For audio, pitch shifting is done using REAPER's pitch-shifting/time-stretching engine with the clip's xref:user-interface/inspector/clip.adoc#inspector-clip-time-stretch-mode[].
|
||||
|
||||
include::partial$clip-prop-applied-quantized.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/velocity-sensitivity.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/source-info.adoc[]
|
||||
|
||||
See xref:key-concepts.adoc#source[].
|
||||
|
||||
TIP: Right-clicking this area opens the xref:user-interface/menus/source-menu.adoc[].
|
||||
|
||||
include::partial$generated/elements/inspector/clip/color.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/triggering.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/start-timing.adoc[]
|
||||
|
||||
See xref:key-concepts.adoc#clip-start-timing[].
|
||||
|
||||
include::partial$generated/elements/inspector/clip/start-timing/immediately.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/start-timing/custom.adoc[]
|
||||
|
||||
TIP: In most cases, picking one of the pre-defined quantizations (e.g. **1 bar**) should be sufficient.
|
||||
|
||||
include::partial$generated/elements/inspector/clip/stop-timing.adoc[]
|
||||
include::partial$generated/elements/inspector/clip/stop-timing/like-start-timing.adoc[]
|
||||
include::partial$generated/elements/inspector/clip/stop-timing/until-end-of-clip.adoc[]
|
||||
|
||||
CAUTION: This can easily lead to unintentional concurrent playback of clips when using xref:user-interface/inspector/column/playback.adoc#inspector-column-exclusive-mode[].
|
||||
|
||||
include::partial$generated/elements/inspector/clip/stop-timing/immediately.adoc[]
|
||||
include::partial$generated/elements/inspector/clip/stop-timing/custom.adoc[]
|
||||
|
||||
|
||||
include::partial$generated/elements/inspector/clip/synchronization.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/sync-to-project-tempo.adoc[]
|
||||
|
||||
TIP: This alone doesn't guarantee yet that your clip will be played in time.
|
||||
It's just one of multiple ingredients for in-sync playback.
|
||||
See xref:key-concepts.adoc#in-sync[].
|
||||
|
||||
NOTE: This is comparable to REAPER's item time base setting.
|
||||
In fact, this will be translated to different item time base settings when xref:user-interface/toolbar.adoc#toolbar-write-to-arrangement[writing to the arrangement].
|
||||
|
||||
include::partial$generated/elements/inspector/clip/tempo.adoc[]
|
||||
|
||||
TIP: This is available for audio clips only.
|
||||
MIDI clips are by its very nature tempo-agnostic.
|
||||
|
||||
include::partial$clip-prop-applied-quantized.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/time-signature.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/downbeat.adoc[]
|
||||
|
||||
TIP: This can be used to realize an link:https://en.wikipedia.org/wiki/Anacrusis[Anacrusis] (or pick-up beat).
|
||||
See xref:user-interface/inspector/matrix/recording.adoc#inspector-matrix-recording-detect-downbeat[].
|
||||
|
||||
include::partial$generated/elements/inspector/clip/section.adoc[]
|
||||
|
||||
.Usage with MIDI clips
|
||||
CAUTION: These properties work for both audio and MIDI clips.
|
||||
When using it on MIDI clips, be aware that the REAPER MIDI editor doesn't indicate the start position or length in any way, which can be confusing.
|
||||
If you want to change the start position and length permanently, it's usually better to adjust the underlying MIDI data.
|
||||
|
||||
include::partial$generated/elements/inspector/clip/start-position.adoc[]
|
||||
|
||||
include::partial$user-interface/clip-prop-adjust-in-beats.adoc[]
|
||||
|
||||
include::partial$clip-prop-applied-quantized.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/length.adoc[]
|
||||
|
||||
The value **Original** means that the source will end at the original end of the source material.
|
||||
|
||||
Use the ÷2 and ×2 buttons to halve or double the current length.
|
||||
|
||||
include::partial$user-interface/clip-prop-adjust-in-beats.adoc[]
|
||||
|
||||
include::partial$clip-prop-applied-quantized.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/midi.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/midi-reset-behavior.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/midi-reset-behavior/none.adoc[]
|
||||
include::partial$generated/elements/inspector/clip/midi-reset-behavior/light-left.adoc[]
|
||||
include::partial$generated/elements/inspector/clip/midi-reset-behavior/extreme-left.adoc[]
|
||||
include::partial$generated/elements/inspector/clip/midi-reset-behavior/light-right.adoc[]
|
||||
include::partial$generated/elements/inspector/clip/midi-reset-behavior/extreme-right.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/midi-channel.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/audio.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/source-fades.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/time-stretch-mode.adoc[]
|
||||
|
||||
Playtime uses this algorithm whenever it needs to adjust beat-based audio clips to the current tempo while keeping the original pitch, but also when xref:user-interface/inspector/clip.adoc#inspector-clip-pitch[adjusting the pitch] of audio clips.
|
||||
|
||||
include::partial$clip-prop-applied-quantized.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/time-stretch-mode/vari-speed.adoc[]
|
||||
include::partial$generated/elements/inspector/clip/time-stretch-mode/keeping-pitch.adoc[]
|
||||
|
||||
When selecting this option, you can choose between all pitch shifting modes and corresponding sub modes that are supported by REAPER.
|
||||
|
||||
include::partial$generated/elements/inspector/clip/resample-mode.adoc[]
|
||||
|
||||
Playtime uses resampling in the following cases:
|
||||
|
||||
. Vari-speed time stretching
|
||||
. Adjusting to play rate changes
|
||||
. Adjusting clips that have a sample rate other than the project/hardware sample rate
|
||||
|
||||
You can choose between all resample modes that are supported by REAPER.
|
||||
|
||||
include::partial$clip-prop-applied-quantized.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/expert-settings.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/clip/source-cut-start.adoc[]
|
||||
|
||||
include::partial$clip-prop-applied-quantized.adoc[]
|
||||
|
||||
|
||||
include::partial$generated/elements/inspector/clip/source-cut-length.adoc[]
|
||||
|
||||
include::partial$clip-prop-applied-quantized.adoc[]
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
= Column inspector
|
||||
|
||||
You will see this when selecting a xref:user-interface/matrix-area.adoc#column-cell[].
|
||||
|
||||
This inspector is divided into two areas:
|
||||
|
||||
xref:user-interface/inspector/column/playback.adoc[]::
|
||||
Settings that are mainly about playing clips
|
||||
|
||||
xref:user-interface/inspector/column/recording.adoc[]::
|
||||
Settings that are mainly about recording clips
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
= Column playback settings
|
||||
|
||||
You will see this when selecting a xref:user-interface/matrix-area.adoc#column-cell[].
|
||||
|
||||
include::partial$generated/elements/inspector/column/basics.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/column/playback-track.adoc[]
|
||||
|
||||
See xref:key-concepts.adoc#column-track[].
|
||||
|
||||
include::partial$generated/elements/inspector/column/custom-name.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/column/exclusive-mode.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/column/follow-scenes.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/column/more.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/column/start-timing.adoc[]
|
||||
|
||||
See xref:user-interface/inspector/clip.adoc#inspector-clip-start-timing[].
|
||||
|
||||
include::partial$generated/elements/inspector/column/stop-timing.adoc[]
|
||||
|
||||
See xref:user-interface/inspector/clip.adoc#inspector-clip-stop-timing[].
|
||||
|
||||
include::partial$generated/elements/inspector/column/trigger-mode.adoc[]
|
||||
include::partial$generated/elements/inspector/column/trigger-mode/toggle.adoc[]
|
||||
include::partial$generated/elements/inspector/column/trigger-mode/momentary.adoc[]
|
||||
include::partial$generated/elements/inspector/column/trigger-mode/retrigger.adoc[]
|
||||
|
||||
|
||||
include::partial$generated/elements/inspector/column/velocity-sensitivity.adoc[]
|
||||
|
||||
See xref:user-interface/inspector/clip.adoc#inspector-clip-velocity-sensitivity[].
|
||||
|
||||
include::partial$generated/elements/inspector/column/time-stretch-mode.adoc[]
|
||||
|
||||
See xref:user-interface/inspector/clip.adoc#inspector-clip-time-stretch-mode[].
|
||||
|
||||
include::partial$generated/elements/inspector/column/resample-mode.adoc[]
|
||||
|
||||
See xref:user-interface/inspector/clip.adoc#inspector-clip-resample-mode[].
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
= Column recording settings
|
||||
|
||||
You will see this when selecting a xref:user-interface/matrix-area.adoc#column-cell[].
|
||||
|
||||
NOTE: There are no column-specific recording settings yet. This section is reserved for the future,
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
= Matrix inspector
|
||||
|
||||
You will see this when selecting the xref:user-interface/matrix-area.adoc#matrix-cell[].
|
||||
|
||||
This inspector is divided into two areas:
|
||||
|
||||
xref:user-interface/inspector/matrix/playback.adoc[]::
|
||||
Settings that are mainly about playing clips
|
||||
|
||||
xref:user-interface/inspector/matrix/recording.adoc[]::
|
||||
Settings that are mainly about recording clips
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
= Matrix playback settings
|
||||
|
||||
You will see this when selecting the xref:user-interface/matrix-area.adoc#matrix-cell[].
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/playback-basics.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/start-timing.adoc[]
|
||||
|
||||
See xref:user-interface/inspector/clip.adoc#inspector-clip-start-timing[].
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/stop-timing.adoc[]
|
||||
|
||||
See xref:user-interface/inspector/clip.adoc#inspector-clip-stop-timing[].
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/trigger-mode.adoc[]
|
||||
|
||||
See xref:user-interface/inspector/column/playback.adoc#inspector-column-trigger-mode[].
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/velocity-sensitivity.adoc[]
|
||||
|
||||
See xref:user-interface/inspector/clip.adoc#inspector-clip-velocity-sensitivity[].
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/activate-slot-on-trigger.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/transport-sync.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/midi-quantization-grid.adoc[]
|
||||
|
||||
See xref:user-interface/inspector/clip.adoc#inspector-clip-quantize[].
|
||||
|
||||
TIP: If you want more advanced quantization options, do quantization in REAPER's MIDI editor instead.
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/playback-more.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/time-stretch-mode.adoc[]
|
||||
|
||||
See xref:user-interface/inspector/clip.adoc#inspector-clip-time-stretch-mode[].
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/resample-mode.adoc[]
|
||||
|
||||
See xref:user-interface/inspector/clip.adoc#inspector-clip-resample-mode[].
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
= Matrix recording settings
|
||||
|
||||
You will see this when selecting the xref:user-interface/matrix-area.adoc#matrix-cell[].
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/recording-basics.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/recording-looped.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/recording-allow-tempo-detection-recording.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/limit-recording-length.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/recording-length.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/recording-midi.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/recording-detect-downbeat.adoc[]
|
||||
|
||||
See xref:user-interface/inspector/clip.adoc#inspector-clip-downbeat[].
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/recording-auto-quantize.adoc[]
|
||||
|
||||
See xref:user-interface/inspector/clip.adoc#inspector-clip-quantize[] and xref:user-interface/inspector/matrix/playback.adoc#inspector-matrix-midi-quantization-grid[].
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/recording-settings-for-new-clips.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/recording-sync-to-project-tempo.adoc[]
|
||||
|
||||
See xref:user-interface/inspector/clip.adoc#inspector-clip-sync-to-project-tempo[].
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/recording-sync-to-project-tempo/auto.adoc[]
|
||||
include::partial$generated/elements/inspector/matrix/recording-sync-to-project-tempo/no.adoc[]
|
||||
include::partial$generated/elements/inspector/matrix/recording-sync-to-project-tempo/yes.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/recording-midi-reset-behavior.adoc[]
|
||||
|
||||
See xref:user-interface/inspector/clip.adoc#inspector-clip-midi-reset-behavior[].
|
||||
|
||||
include::partial$generated/elements/inspector/matrix/tempo-detection-range.adoc[]
|
||||
|
||||
.Simple example
|
||||
====
|
||||
Playtime might detect that imported audio material has the following valid tempos: 30bpm, 60bpm, 120bpm, 240 bpm.
|
||||
By setting the tempo detection range to 80bpm - 180bpm, Playtime will for sure pick 120bpm.
|
||||
====
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
= Row inspector
|
||||
|
||||
You will see this when selecting a xref:user-interface/matrix-area.adoc#row-cell[].
|
||||
|
||||
include::partial$generated/elements/inspector/row/basics.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/row/name.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/row/tempo.adoc[]
|
||||
|
||||
WARNING: This is an experimental feature.
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
= Slot inspector
|
||||
|
||||
You will see this when selecting a xref:user-interface/matrix-area.adoc#slot-cell[].
|
||||
|
||||
include::partial$generated/elements/inspector/slot/clip-picker.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/slot/clip.adoc[]
|
||||
|
||||
For details about the actual clip, see xref:user-interface/inspector/clip.adoc[].
|
||||
|
||||
TIP: Right-clicking one of the clips opens the xref:user-interface/menus/clip-menu.adoc[].
|
||||
|
||||
[[clip-drag-and-drop]]
|
||||
.Drag-and-drop support
|
||||
****
|
||||
Move a clip to another slot::
|
||||
Drag one clip onto another slot in order to move it there.
|
||||
****
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
= Track inspector
|
||||
|
||||
You will see this when selecting a xref:user-interface/track-area.adoc[track panel].
|
||||
|
||||
include::partial$generated/elements/inspector/track/basics.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/track/name.adoc[]
|
||||
|
||||
include::partial$generated/elements/inspector/track/color.adoc[]
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
= Keyboard shortcuts
|
||||
|
||||
Playtime provides keyboard shortcuts in addition to the xref:helgobox::app/user-interface/keyboard-shortcuts.adoc[general ones].
|
||||
|
||||
[cols = "1,1a"]
|
||||
|===
|
||||
|Shortcut |Purpose
|
||||
|
||||
|kbd:[Cmd+Z]
|
||||
|Invokes Playtime's undo function.
|
||||
|
||||
|kbd:[Cmd+R]
|
||||
|Invokes Playtime's redo function.
|
||||
|
||||
|kbd:[Backspace/Delete]
|
||||
|Deletes the currently selected column or row, or clears the selected slot's contents.
|
||||
|
||||
|kbd:[Cmd/Ctrl+C]
|
||||
|Copies the currently selected row or slot contents to the clipboard.
|
||||
|
||||
|kbd:[Cmd/Ctrl+X]
|
||||
|Cuts the currently selected row or slot contents to the clipboard.
|
||||
|
||||
|kbd:[Cmd/Ctrl+V]
|
||||
|Pastes row or slot contents from the clipboard to the currently selected row or slot.
|
||||
|
||||
|kbd:[Space]
|
||||
|Starts or stops playback.
|
||||
|
||||
|[[enter,Enter]] kbd:[Enter]
|
||||
|
|
||||
Carries out an action depending on the current selection:
|
||||
|
||||
* When the xref:user-interface/matrix-area.adoc#matrix-cell[] is selected, stops all clips in the xref:key-concepts.adoc#matrix[].
|
||||
* When a xref:user-interface/matrix-area.adoc#column-cell[] is selected, stops all clips in the xref:key-concepts.adoc#column[].
|
||||
* When a xref:user-interface/matrix-area.adoc#row-cell[] is selected, plays all clips in the xref:key-concepts.adoc#row[] whose column follows scenes.
|
||||
* When a xref:user-interface/matrix-area.adoc#slot-cell[] is selected, xref:further-concepts/matrix.adoc#trigger-slot[triggers] the xref:key-concepts.adoc#slot[].
|
||||
|
||||
|kbd:[F2]
|
||||
|Renames the currently selected column, row, clip or track.
|
||||
|
||||
|kbd:[T]
|
||||
|Taps the tempo.
|
||||
|
||||
|kbd:[M]
|
||||
|Toggles the metronome.
|
||||
|
||||
|kbd:[E]
|
||||
|Edits the first clip in the currently selected slot.
|
||||
|
||||
|kbd:[Q]
|
||||
|Quantizes the first clip in the currently selected slot.
|
||||
|
||||
|kbd:[O]
|
||||
|Overdubs the first clip in the currently selected slot, if it's a MIDI clip.
|
||||
|
||||
|kbd:[A]
|
||||
|Exports the complete matrix or the currently selected column, row or clip to the arrangement.
|
||||
|
||||
|kbd:[Shift+Cmd/Ctrl+P]
|
||||
|Executes the REAPER action xref:reaper-actions.adoc#show-hide-playtime[].
|
||||
|
||||
|===
|
||||
|
||||
+131
@@ -0,0 +1,131 @@
|
||||
= Matrix area
|
||||
|
||||
include::partial$user-interface/matrix-area-desc.adoc[]
|
||||
|
||||
.Column cells of the matrix area
|
||||
image::generated/screenshots/elements/area/matrix-area-1.png[]
|
||||
|
||||
.Row cells of the matrix area
|
||||
image::generated/screenshots/elements/area/matrix-area-2.png[width=100]
|
||||
|
||||
.Slot cells of the matrix area
|
||||
image::generated/screenshots/elements/area/matrix-area-3.png[]
|
||||
|
||||
include::partial$generated/elements/matrix/template-panel.adoc[]
|
||||
|
||||
This is only shown if the matrix doesn't have any columns yet.
|
||||
|
||||
include::partial$generated/elements/matrix/audio-template-button.adoc[]
|
||||
include::partial$generated/elements/matrix/midi-template-button.adoc[]
|
||||
include::partial$generated/elements/matrix/mixed-template-button.adoc[]
|
||||
|
||||
== General
|
||||
|
||||
include::partial$generated/elements/matrix/add-column.adoc[]
|
||||
|
||||
Adding a new column automatically creates a corresponding REAPER track, on which clips in this column will be played back.
|
||||
See xref:key-concepts.adoc#column-track[].
|
||||
|
||||
include::partial$generated/elements/matrix/add-row.adoc[]
|
||||
|
||||
include::partial$generated/elements/matrix/scroll-indicator.adoc[]
|
||||
|
||||
// Matrix cell
|
||||
|
||||
include::partial$generated/elements/matrix-cell.adoc[]
|
||||
|
||||
include::partial$generated/elements/matrix-cell/stop.adoc[]
|
||||
|
||||
include::partial$generated/elements/matrix-cell/settings.adoc[]
|
||||
|
||||
See xref:user-interface/inspector/matrix.adoc[].
|
||||
|
||||
TIP: Right-clicking this area opens the xref:user-interface/menus/matrix-menu.adoc[].
|
||||
|
||||
// Column cell
|
||||
|
||||
include::partial$generated/elements/column-cell.adoc[]
|
||||
|
||||
If you don't see the upper part, check xref:user-interface/dialogs/settings-dialog.adoc#settings-show-column-numbers[].
|
||||
|
||||
[[column-drag-and-drop]]
|
||||
.Column drag-and-drop support
|
||||
****
|
||||
Reorder column::
|
||||
Drag the cell left or right to change the position of the column.
|
||||
****
|
||||
|
||||
include::partial$generated/elements/column-cell/exclusive-mode.adoc[]
|
||||
|
||||
This is a shortcut for xref:user-interface/inspector/column/playback.adoc#inspector-column-exclusive-mode[].
|
||||
|
||||
include::partial$generated/elements/column-cell/follow-scenes.adoc[]
|
||||
|
||||
This is a shortcut for xref:user-interface/inspector/column/playback.adoc#inspector-column-follow-scenes[].
|
||||
|
||||
include::partial$generated/elements/column-cell/has-overrides.adoc[]
|
||||
|
||||
include::partial$generated/elements/column-cell/stop.adoc[]
|
||||
|
||||
include::partial$generated/elements/column-cell/label.adoc[]
|
||||
|
||||
See xref:user-interface/inspector/column.adoc[].
|
||||
|
||||
TIP: Right-clicking this area opens the xref:user-interface/menus/column-menu.adoc[].
|
||||
|
||||
// Row cell
|
||||
|
||||
include::partial$generated/elements/row-cell.adoc[]
|
||||
|
||||
[[row-drag-and-drop]]
|
||||
.Row drag-and-drop support
|
||||
****
|
||||
Reorder row::
|
||||
Drag the cell up or down to change the position of the row.
|
||||
****
|
||||
|
||||
include::partial$generated/elements/row-cell/play-scene.adoc[]
|
||||
|
||||
See xref:key-concepts.adoc#scene[].
|
||||
|
||||
include::partial$generated/elements/row-cell/label.adoc[]
|
||||
|
||||
See xref:user-interface/inspector/row.adoc[].
|
||||
|
||||
TIP: Right-clicking this area opens the xref:user-interface/menus/row-menu.adoc[].
|
||||
|
||||
// Slot cell
|
||||
|
||||
include::partial$generated/elements/slot-cell.adoc[]
|
||||
|
||||
include::partial$generated/elements/slot-cell/trigger.adoc[]
|
||||
|
||||
include::partial$generated/elements/slot-cell/record.adoc[]
|
||||
|
||||
This is only available if the corresponding xref:key-concepts.adoc#column-track[] is armed.
|
||||
|
||||
include::partial$generated/elements/slot-cell/content.adoc[]
|
||||
|
||||
See xref:user-interface/inspector/slot.adoc[].
|
||||
|
||||
TIP: Right-clicking this area opens the xref:user-interface/menus/slot-menu.adoc[].
|
||||
|
||||
[[slot-drag-and-drop]]
|
||||
.Slot drag-and-drop support
|
||||
****
|
||||
Move slot contents::
|
||||
Drag this area onto another slot in order to move all clips within this slot to the other slot.
|
||||
|
||||
Copy slot contents::
|
||||
Drag this area onto another slot while holding kbd:[Cmd/Ctrl] in order to copy all clips within this slot to the other slot.
|
||||
|
||||
Import content::
|
||||
Drag a MIDI or audio file from outside onto this area in order to import it as a clip. This should work from the REAPER media explorer, from other plug-ins that offer dragging out content as files and from most file managers.
|
||||
+
|
||||
NOTE: Dragging REAPER items onto the slot won't work, because REAPER items are not real files. Use xref:user-interface/menus/slot-menu.adoc#slot-import-selected-item[] instead!
|
||||
****
|
||||
|
||||
include::partial$generated/elements/slot-cell/clip-count.adoc[]
|
||||
|
||||
If there's more than one clip in the slot, all will be triggered at the same time.
|
||||
However, each one will start according to its individual start timing.
|
||||
@@ -0,0 +1,3 @@
|
||||
= Menus
|
||||
|
||||
Most of the menus in Playtime are context menus that you can open by right-clicking certain areas.
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
= Clip context menu
|
||||
|
||||
Right-clicking one of the clips in the xref:user-interface/inspector/slot.adoc#inspector-slot-clip-picker[] opens this context menu.
|
||||
|
||||
include::partial$generated/menus/clip/remove-from-slot.adoc[]
|
||||
include::partial$generated/menus/clip/promote-to-top.adoc[]
|
||||
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
= Column context menu
|
||||
|
||||
Right-clicking xref:user-interface/matrix-area.adoc#column-cell-label[] opens this context menu.
|
||||
|
||||
include::partial$generated/menus/column/rename-column-or-track.adoc[]
|
||||
include::partial$generated/menus/column/duplicate.adoc[]
|
||||
include::partial$generated/menus/column/insert-column-left.adoc[]
|
||||
include::partial$generated/menus/column/insert-column-right.adoc[]
|
||||
include::partial$generated/menus/column/insert-column-for-each-selected-track.adoc[]
|
||||
include::partial$generated/menus/column/remove.adoc[]
|
||||
include::partial$generated/menus/column/remove-keep-track.adoc[]
|
||||
include::partial$generated/menus/column/export-to-arrangement.adoc[]
|
||||
include::partial$generated/menus/column/export-to-clipboard-as-lua.adoc[]
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
= Export to clipboard menu
|
||||
|
||||
This menu can be found in the xref:helgobox::plug-in/user-interface.adoc[plug-in window].
|
||||
|
||||
The following list only describes the Playtime-related menu entries. For the rest, see xref:helgobox::plug-in/user-interface/menu-bar.adoc#export-to-clipboard[] in the Helgobox Reference.
|
||||
|
||||
[[export-playtime-matrix-as-json]] Export Playtime matrix as JSON::
|
||||
Copies a dump of the xref:key-concepts.adoc#matrix[] (including its settings and contents) to the clipboard in JSON format.
|
||||
|
||||
Export Playtime matrix as Lua::
|
||||
Like <<export-playtime-matrix-as-json>> but generates Lua/Luau code instead. This can be helpful if you want to xref:advanced-usage-scenarios/generate-matrix.adoc[generate a matrix using code].
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
= Matrix context menu
|
||||
|
||||
Right-clicking xref:user-interface/matrix-area.adoc#matrix-cell-settings[] opens this context menu.
|
||||
|
||||
include::partial$generated/menus/matrix/insert-column-for-each-selected-track.adoc[]
|
||||
include::partial$generated/menus/matrix/insert-column-right.adoc[]
|
||||
include::partial$generated/menus/matrix/insert-row-below.adoc[]
|
||||
include::partial$generated/menus/matrix/export-to-arrangement.adoc[]
|
||||
include::partial$generated/menus/matrix/export-to-clipboard-as-lua.adoc[]
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
= Row context menu
|
||||
|
||||
Right-clicking xref:user-interface/matrix-area.adoc#row-cell-label[] opens this context menu.
|
||||
|
||||
include::partial$generated/menus/row/rename.adoc[]
|
||||
include::partial$generated/menus/row/build-scene-from-currently-playing-clips.adoc[]
|
||||
include::partial$generated/menus/row/copy.adoc[]
|
||||
include::partial$generated/menus/row/cut.adoc[]
|
||||
include::partial$generated/menus/row/paste.adoc[]
|
||||
include::partial$generated/menus/row/clear.adoc[]
|
||||
include::partial$generated/menus/row/duplicate.adoc[]
|
||||
include::partial$generated/menus/row/insert-row-above.adoc[]
|
||||
include::partial$generated/menus/row/insert-row-below.adoc[]
|
||||
include::partial$generated/menus/row/remove.adoc[]
|
||||
include::partial$generated/menus/row/export-to-arrangement.adoc[]
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
= Slot context menu
|
||||
|
||||
Right-clicking xref:user-interface/matrix-area.adoc#slot-cell-content[] opens this context menu.
|
||||
|
||||
include::partial$generated/menus/slot/rename-primary-clip.adoc[]
|
||||
include::partial$generated/menus/slot/copy.adoc[]
|
||||
include::partial$generated/menus/slot/cut.adoc[]
|
||||
include::partial$generated/menus/slot/paste.adoc[]
|
||||
include::partial$generated/menus/slot/clear.adoc[]
|
||||
include::partial$generated/menus/slot/import-selected-item.adoc[]
|
||||
include::partial$generated/menus/slot/import-files.adoc[]
|
||||
include::partial$generated/menus/slot/export-primary-clip-to-arrangement.adoc[]
|
||||
include::partial$generated/menus/slot/export-primary-clip-to-clipboard-as-lua.adoc[]
|
||||
|
||||
This can be helpful if you want to xref:advanced-usage-scenarios/generate-matrix.adoc[generate a matrix using code].
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
= Source context menu
|
||||
|
||||
Right-clicking xref:user-interface/inspector/clip.adoc#inspector-clip-source-info[] opens this context menu.
|
||||
|
||||
include::partial$generated/menus/source-info/open-in-media-explorer.adoc[]
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
= Navigation bar
|
||||
|
||||
include::partial$user-interface/nav-bar-desc.adoc[]
|
||||
|
||||
See xref:helgobox::app/user-interface/navigation-bar.adoc[] in the Helgobox documentation.
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
= Smart-record menu
|
||||
|
||||
Right-clicking xref:user-interface/toolbar.adoc#toolbar-smart-record[] opens this menu.
|
||||
|
||||
include::partial$generated/menus/smart-record/limit-recording-length.adoc[]
|
||||
|
||||
This is a shortcut for xref:user-interface/inspector/matrix/recording.adoc#inspector-matrix-limit-recording-length[].
|
||||
@@ -0,0 +1,14 @@
|
||||
= Title bar
|
||||
|
||||
include::partial$user-interface/title-bar-desc.adoc[]
|
||||
|
||||
This section focuses solely on the Playtime-specific functions.
|
||||
For more information on the general functions, refer to the xref:helgobox::app/user-interface/title-bar.adoc[] section in the Helgobox documentation.
|
||||
|
||||
include::partial$generated/elements/title-bar/tempo-detection-recording-hint.adoc[]
|
||||
|
||||
include::partial$generated/elements/title-bar/purchase-playtime.adoc[]
|
||||
|
||||
This button is displayed only if your copy of Playtime has not been activated yet.
|
||||
|
||||
See xref:user-interface/dialogs/purchase-and-activate-dialog.adoc[].
|
||||
@@ -0,0 +1,123 @@
|
||||
= Toolbar
|
||||
|
||||
include::partial$user-interface/toolbar-desc.adoc[]
|
||||
|
||||
.Toolbar
|
||||
image::generated/screenshots/elements/area/toolbar-0.png[]
|
||||
|
||||
// Tempo section
|
||||
|
||||
include::partial$generated/elements/toolbar/tempo-section.adoc[]
|
||||
|
||||
include::partial$generated/elements/toolbar/metronome.adoc[]
|
||||
|
||||
See xref:user-interface/dialogs/tempo-settings-dialog.adoc[].
|
||||
|
||||
NOTE: The Playtime metronome is only audible when REAPER is not playing. When REAPER is playing, REAPER's normal metronome takes over. This is also the reason why Playtime automatically syncs Playtime's metronome on/off status to REAPER's metronome on/off status.
|
||||
|
||||
include::partial$generated/elements/toolbar/tempo.adoc[]
|
||||
|
||||
include::partial$generated/elements/toolbar/tap-tempo.adoc[]
|
||||
|
||||
include::partial$generated/elements/toolbar/time-signature.adoc[]
|
||||
|
||||
include::partial$generated/elements/toolbar/play-rate.adoc[]
|
||||
|
||||
// Transport section
|
||||
|
||||
include::partial$generated/elements/toolbar/transport-section.adoc[]
|
||||
|
||||
Those are different from the REAPER transport controls, as Playtime is capable of playing and recording while REAPER is stopped.
|
||||
|
||||
include::partial$generated/elements/toolbar/smart-record.adoc[]
|
||||
|
||||
TIP: Right-clicking the smart-record button opens the xref:user-interface/smart-record-menu.adoc[].
|
||||
|
||||
include::partial$generated/elements/toolbar/start-stop-playback.adoc[]
|
||||
|
||||
If you want to start REAPER playback together with Playtime, you have two options:
|
||||
|
||||
[loweralpha]
|
||||
. Start playback within REAPER itself (which automatically starts Playtime playback)
|
||||
. Switch xref:user-interface/inspector/matrix/playback.adoc#inspector-matrix-transport-sync[] to **Full**
|
||||
|
||||
// Visual metronome
|
||||
|
||||
include::partial$generated/elements/toolbar/visual-metronome.adoc[]
|
||||
|
||||
// Start timing
|
||||
|
||||
include::partial$generated/elements/toolbar/matrix-start-timing.adoc[]
|
||||
|
||||
See xref:key-concepts.adoc#clip-start-timing[].
|
||||
|
||||
// Matrix sequencer
|
||||
|
||||
include::partial$generated/elements/toolbar/matrix-sequencer.adoc[]
|
||||
|
||||
See xref:key-concepts.adoc#matrix-sequence[].
|
||||
|
||||
include::partial$generated/elements/toolbar/record-matrix-sequence.adoc[]
|
||||
|
||||
This will always create a new sequence.
|
||||
Old sequences are retained, so you can press this anytime without worrying to overwrite old sequences.
|
||||
|
||||
Even though the button turns red right after clicking it, you don't need to rush with your performance.
|
||||
After recording, Playtime will automatically remove silence at the beginning of the sequence.
|
||||
|
||||
include::partial$generated/elements/toolbar/matrix-sequence-picker.adoc[]
|
||||
|
||||
See xref:user-interface/dialogs/sequences-dialog.adoc[].
|
||||
|
||||
include::partial$generated/elements/toolbar/play-stop-matrix-sequence.adoc[]
|
||||
|
||||
include::partial$generated/elements/toolbar/write-to-arrangement.adoc[]
|
||||
|
||||
If the Playtime column tracks already contain items, pressing this button will show the xref:user-interface/dialogs/arrangement-writing-mode-dialog.adoc[].
|
||||
|
||||
See xref:usage/arrangement.adoc#feature-arrangement[] for details.
|
||||
|
||||
include::partial$generated/elements/toolbar/show-hide-midi-triggers.adoc[]
|
||||
|
||||
[IMPORTANT]
|
||||
====
|
||||
The purpose of this feature is to quickly create *simple* and *xref:helgobox:ROOT:key-concepts.adoc#instance[instance-specific]* mappings of MIDI keys/pads/buttons to cells.
|
||||
|
||||
* If you are looking for out-of-the-box support for full-featured grid controllers, such as the Launchpad, see xref:usage/grid-controllers.adoc[].
|
||||
* If you are looking for advanced, highly-customizable control scenarios, you should use xref:realearn::introduction.adoc[ReaLearn] with its dedicated xref:realearn::targets/playtime.adoc[].
|
||||
====
|
||||
|
||||
Here's how you assign a new MIDI trigger to a cell or toolbar button, after showing the MIDI triggers:
|
||||
|
||||
. Click the MIDI trigger area in the cell or next to the toolbar button. It should turn red, which indicates that Playtime waits for you to press something.
|
||||
. Press a key or foot switch on your music keyboard. The area should now turn back to its original color and the corresponding note name or MIDI CC number should appear.
|
||||
. You can now use the note or foot switch to trigger the cell or invoke the toolbar function.
|
||||
|
||||
.Powered by ReaLearn
|
||||
[TIP]
|
||||
====
|
||||
Playtime's MIDI triggers are powered by xref:realearn::introduction.adoc[ReaLearn], Helgobox's controller integration solution. In fact, each Playtime MIDI trigger corresponds to one xref:realearn::key-concepts.adoc#mapping[] in ReaLearn's xref:realearn::key-concepts.adoc#unit[Main unit].
|
||||
|
||||
When you learn a MIDI trigger, you are actually learning the source of a ReaLearn mapping that Playtime automatically creates for you. The target is pre-configured by Playtime and is nothing more than one of the xref:realearn::targets/playtime.adoc[]. The beauty of this is that under the hood, you have the complete power of ReaLearn at your disposal, including its xref:realearn::key-concepts.adoc#feedback[] capabilities!
|
||||
====
|
||||
|
||||
|
||||
[[midi-trigger-troubleshooting]]
|
||||
.Troubleshooting
|
||||
****
|
||||
If nothing happens when you press the note or foot switch, we need to check the MIDI signal flow.
|
||||
|
||||
. Press the xref:helgobox::app/user-interface/navigation-bar.adoc#navbar-show-helgobox-plugin[] button in the navigation bar on the left. This should open the xref:helgobox::plug-in/user-interface.adoc[plug-in window] starring ReaLearn's xref:realearn::user-interface/main-panel.adoc[].
|
||||
. Check ReaLearn's xref:realearn::user-interface/main-panel/input-output-section.adoc[input]!
|
||||
|
||||
By default, the input should be set to xref:realearn::user-interface/main-panel/input-output-section.adoc#fx-input[]. This means that ReaLearn captures MIDI messages from the surrounding REAPER track (the one containing this xref:helgobox::key-concepts.adoc#instance[Helgobox instance]). *In this case, make sure that the track is armed and input monitoring is switched on!*
|
||||
|
||||
If you want, you can also set the input to a specific device instead! In that case, the Helgobox track doesn't need to be armed.
|
||||
|
||||
After that, try again learning the MIDI trigger within Playtime!
|
||||
|
||||
.Leveraging button LEDs using ReaLearn's feedback capabilities
|
||||
TIP: If the buttons on your device have LEDs, you might want to set ReaLearn's output to the same device. With a bit of luck, that makes the LEDs reflect the current clip playback or function state. However, depending on the specific controller, that part might need a bit more work.
|
||||
****
|
||||
|
||||
include::partial$generated/elements/toolbar/pane-toggler.adoc[]
|
||||
+150
@@ -0,0 +1,150 @@
|
||||
= Track area
|
||||
|
||||
include::partial$user-interface/track-area-desc.adoc[]
|
||||
|
||||
NOTE: Since multiple columns can have the same playback track, it's possible that you see one track panel multiple times!
|
||||
|
||||
.Master track panel
|
||||
image::generated/screenshots/elements/area/track-area-0.png[width=80]
|
||||
|
||||
.Column track panels
|
||||
image::generated/screenshots/elements/area/track-area-1.png[]
|
||||
|
||||
== Track panel header
|
||||
|
||||
The top of the track panel is the _track panel header_.
|
||||
|
||||
.Drag-and-drop support
|
||||
****
|
||||
Reorder column::
|
||||
Drag the header left or right to change the position of the corresponding column.
|
||||
****
|
||||
|
||||
include::partial$generated/elements/track-panel/input-type-indicator.adoc[]
|
||||
|
||||
include::partial$generated/elements/track-panel/label.adoc[]
|
||||
|
||||
== Track input section
|
||||
|
||||
include::partial$generated/elements/track-panel/input.adoc[]
|
||||
|
||||
WARNING: Playtime captures audio or MIDI input more or less directly from the hardware.
|
||||
That also means that the track's _input_ FX chain will not have any effect on the recording!
|
||||
You can work around this limitation by using *Loopback* channels instead of input FX.
|
||||
|
||||
TIP: Selecting *Loopback* channels as audio input doesn't automatically enable them!
|
||||
Make sure that the REAPER setting *Virtual loopback audio hardware channels* in menu:Options[Preferences/Settings... > Audio] is high enough!
|
||||
|
||||
NOTE: This directly sets the input of the corresponding REAPER track.
|
||||
Although technically not necessary for recording because Playtime doesn't use REAPER's track recording facility, it is important for input monitoring.
|
||||
|
||||
include::partial$generated/elements/track-panel/midi-channel-filter.adoc[]
|
||||
|
||||
NOTE: This directly sets the input MIDI channel of the corresponding REAPER track.
|
||||
|
||||
include::partial$generated/elements/track-panel/map-to-midi-channel.adoc[]
|
||||
|
||||
NOTE: This directly sets the "Map input to channel" value of the corresponding REAPER track.
|
||||
|
||||
include::partial$generated/elements/track-panel/input-monitoring.adoc[]
|
||||
|
||||
include::partial$generated/elements/track-panel/input-monitoring-off.adoc[]
|
||||
|
||||
include::partial$generated/elements/track-panel/input-monitoring-auto.adoc[]
|
||||
|
||||
include::partial$generated/elements/track-panel/input-monitoring-on.adoc[]
|
||||
|
||||
NOTE: Which input monitoring mode you choose also has an effect on how Playtime does latency compensation during recording. Read more about that in xref:further-concepts/general.adoc#latency-compensation[].
|
||||
|
||||
[[input-monitoring-explained, Playtime input monitoring explained]]
|
||||
[NOTE]
|
||||
.Playtime input monitoring explained
|
||||
====
|
||||
Playtime input monitoring options are slightly different from REAPER's input monitoring options.
|
||||
Each input monitoring option mode translates to a certain combination of REAPER track properties:
|
||||
|
||||
[cols="s,s,1,1,1"]
|
||||
|===
|
||||
|Track input monitoring in Playtime | Track armed in Playtime | Track monitoring in REAPER | Track record input in REAPER | Track armed in REAPER
|
||||
|
||||
|Off
|
||||
|No
|
||||
|Off
|
||||
|Record: input (audio or MIDI)
|
||||
|No
|
||||
|
||||
|Off
|
||||
|Yes
|
||||
|Off
|
||||
|Record: input (audio or MIDI)
|
||||
|Yes
|
||||
|
||||
|Auto
|
||||
|No
|
||||
|On (Monitor Input)
|
||||
|Record: input (audio or MIDI)
|
||||
|No
|
||||
|
||||
|Auto
|
||||
|Yes
|
||||
|On (Monitor Input)
|
||||
|Record: input (audio or MIDI)
|
||||
|Yes
|
||||
|
||||
|On
|
||||
|No
|
||||
|On (Monitor Input)
|
||||
|Record: disable (input monitoring only)
|
||||
|Yes
|
||||
|
||||
|On
|
||||
|Yes
|
||||
|On (Monitor Input)
|
||||
|Record: input (audio or MIDI)
|
||||
|Yes
|
||||
|===
|
||||
====
|
||||
|
||||
== Track output section
|
||||
|
||||
=== PDC info
|
||||
|
||||
If the track is affected by xref:further-concepts/general.adoc#pdc[], a small icon will light up.
|
||||
|
||||
include::partial$generated/elements/track-panel/pdc-tiny.adoc[]
|
||||
include::partial$generated/elements/track-panel/pdc-significant.adoc[]
|
||||
include::partial$generated/elements/track-panel/pdc-critical.adoc[]
|
||||
|
||||
include::partial$generated/elements/track-panel/pan.adoc[]
|
||||
|
||||
NOTE: This directly sets the pan value of the corresponding REAPER track.
|
||||
|
||||
include::partial$generated/elements/track-panel/volume.adoc[]
|
||||
|
||||
When not enough vertical space is available, this turns into a drag field, visualizing the peaks as color changes.
|
||||
|
||||
NOTE: This directly sets the volume of the corresponding REAPER track.
|
||||
|
||||
include::partial$generated/elements/track-panel/instrument-fx.adoc[]
|
||||
|
||||
This icon is only visible if there's at least one instrument in the FX chain.
|
||||
|
||||
include::partial$generated/elements/track-panel/fx-chain.adoc[]
|
||||
|
||||
The button is displayed in bold font if there's at least one FX in the chain.
|
||||
|
||||
include::partial$generated/elements/track-panel/routing.adoc[]
|
||||
|
||||
include::partial$generated/elements/track-panel/arm.adoc[]
|
||||
|
||||
NOTE: See <<input-monitoring-explained>> to learn how this translates to REAPER track properties.
|
||||
|
||||
|
||||
include::partial$generated/elements/track-panel/mute.adoc[]
|
||||
|
||||
NOTE: This directly sets the mute state of the corresponding REAPER track.
|
||||
|
||||
include::partial$generated/elements/track-panel/solo.adoc[]
|
||||
|
||||
NOTE: This directly sets the solo state of the corresponding REAPER track.
|
||||
|
||||
Reference in New Issue
Block a user