Actions Tips: Difference between revisions
| (10 intermediate revisions by the same user not shown) | |||
| Line 3: | Line 3: | ||
Loopy Pro's actions can provide control over almost every aspect of Loopy Pro and can be used to create custom behavior. Actions are used by the MIDI Learn/MIDI Binding system, widgets (buttons, sliders, dials, etc), gestures and follow action system to control Loopy Pro. | Loopy Pro's actions can provide control over almost every aspect of Loopy Pro and can be used to create custom behavior. Actions are used by the MIDI Learn/MIDI Binding system, widgets (buttons, sliders, dials, etc), gestures and follow action system to control Loopy Pro. | ||
= MIDI Learn = | == MIDI Learn == | ||
When you MIDI Learn in Loopy Pro, you are creating a MIDI Binding to an action | When you MIDI Learn in Loopy Pro, you are creating a MIDI Binding to an action. You can edit that binding via the Control Settings panel. You can modify that options for the action or add additional actions to be performed by the binding. | ||
= Action Sequences = | == Action Sequences == | ||
Anywhere in Loopy Pro where an action can be used, a series of actions can be used. There will be a "+" icon you can tap to add more actions. For example, if you MIDI Learn Play/Stop for a clip, you can go into Control Settings and find the MIDI binding you created and add more actions to the sequence so that your MIDI binding does more than just toggle play for that clip. | Anywhere in Loopy Pro where an action can be used, a series of actions can be used. There will be a "+" icon you can tap to add more actions. For example, if you MIDI Learn Play/Stop for a clip, you can go into Control Settings and find the MIDI binding you created and add more actions to the sequence so that your MIDI binding does more than just toggle play for that clip. | ||
= Action Timing = | == Action Timing == | ||
To the left of each action is a white circle. Tapping on the circle pops up a panel to set options for when the action is performed. | To the left of each action is a white circle. Tapping on the circle pops up a panel to set options for when the action is performed. | ||
[[File:loopy_pro_action_circle.jpeg|600px]] | |||
| Line 30: | Line 27: | ||
If the timing is set to Quantization, the action is performed at the next time that the clocks aligns with that quantization setting. If the timing is set to Delay, the action happens after Delay of the specified time and is independent of the clock's position. If the clock is not moving, all quantizations fire immediately! | If the timing is set to Quantization, the action is performed at the next time that the clocks aligns with that quantization setting. If the timing is set to Delay, the action happens after Delay of the specified time and is independent of the clock's position. If the clock is not moving, all quantizations fire immediately! | ||
= | === Timing Icons === | ||
[[File:loopy_pro_action_icons.jpeg|600px]] | |||
The circle that appears next to actions indicates the timing/trigger settings. | |||
* An empty circle indicates "With Last" | |||
* A circle with a clock in it indicates "With Last" with delay or quantization | |||
* A circle with a number indicates a "Next Trigger" sequence with the number indicating the trigger number. | |||
* A circle with an arrow indicates "After Last" | |||
= After Last/With Last/Next Trigger = | === Action Timing and Tempo === | ||
Timing in Loopy Pro 1.x is always related to musical time/tempo. When the tempo hasn't yet been defined, events with delays or quantization execute immediately. Starting with Loopy Pro 2.0, timing can be set in absolute time (seconds.milliseconds) | |||
=== After Last/With Last/Next Trigger === | |||
The timing options for all but the first action are slightly different from the first action's. | The timing options for all but the first action are slightly different from the first action's. | ||
| Line 40: | Line 46: | ||
In addition to the choice of Quantization and Delay, the following options appear: After Last, With Last, Next Trigger. The specified quantization or delay is applied. Most actions take next to no time to execute. Stop clip actions are somewhat different as discussed below. | In addition to the choice of Quantization and Delay, the following options appear: After Last, With Last, Next Trigger. The specified quantization or delay is applied. Most actions take next to no time to execute. Stop clip actions are somewhat different as discussed below. | ||
'''After Last'''. The action is performed after the previous action is performed (with the specified quantization or delay). | '''After Last'''. The action is performed after the previous action is performed (with the specified quantization or delay). Many actions take next to no time to execute (fractions of a millisecond. Some actions, such as play, stop, solo or actions with a specified ramp time, are not considered to have executed until they are "done". What done is depends on the action. See <u>When is After</u> below. | ||
'''With Last'''. The action is performed simultaneous with the previous action (with the specified quantization or delay). Use this when you need actions to fire truly simultaneously or for the timing to be precisely based on the previous actions execution time. In some contexts After Last and With Last will seem to be the same, but in some cases it can make a difference. Especially if any action changes something that a subsequent action relies on. | '''With Last'''. The action is performed simultaneous with the previous action (with the specified quantization or delay). Use this when you need actions to fire truly simultaneously or for the timing to be precisely based on the previous actions execution time. In some contexts After Last and With Last will seem to be the same, but in some cases it can make a difference. Especially if any action changes something that a subsequent action relies on. | ||
'''Next Trigger'''. This action is fired the next time that the action sequence is triggered. For example, you might have a button that the first time it is pressed mutes the bass instrument and records clip 1 and on the second press unmutes the guitar, mutes the bass and records clip 2 | '''Next Trigger'''. This action is fired the next time that the action sequence is triggered. For example, you might have a button that the first time it is pressed mutes the bass instrument and records clip 1 and on the second press unmutes the guitar, mutes the bass and records clip 2. | ||
==== When is After? ==== | |||
Many actions take next to no time to execute (fractions of a millisecond. Some actions, such as play, stop, solo or actions with a specified ramp time, are not considered to have executed until they are "done". What done is depends on the action. Loopy Pro tries to be smart about what ''done'' is depending on the context. Here is a list of common actions that may not be ''done'' immediately: | |||
* ''Stop'' - the action is done when the clip or clips have stopped. | |||
* ''Play/Solo'' - the action is done when the targeted clip or clips starts playing. If there is a count-in before the clip starts playing, ''done'' is when the clip actually starts playing. If a clip is already clipping, play is ''done'' immediately '''UNLESS''' the play action has ''Retrigger'' turned on. If ''Retrigger'' is on, the play action is done when the retriggered count-in finishes. | |||
* | * ''Adjust actions with a ramp'' - if you have an ''Adjust'' action, such as Adjust Parameter, with ramp time, the action is ''done'' when the ramp finishes. | ||
==== Using Delays Between Actions ==== | |||
For actions such as play, stop, or solo actions that are quantized, it is sometimes necessary to use ''After Next'' with a delay. | |||
For example, let's say your clips use ''Loop'' play quantization. If you set up an action sequence of Solo Clip 1 then (after last) Solo Clip 2, Loopy Pro would seem to go directly to soloing clip 2 without first playing clip 1. This is because as soon as clip 1 starts soloing, Loopy Pro queues clip 2 to solo. Clip 2's own quantization criterion is met, so clip 2 starts soloing. In order to prevent this behavior, the action sequence you want is Solo Clip 1 then (after last WITH DELAY) Solo Clip 2. | |||
'''Delay length'''. Use a delay of 1/8th note or more. (Loopy has a little grace period when triggering loops so that if you are a little late triggering a loop it doesn't wait for another cycle to complete -- so the delay has to be long enough that Loopy doesn't think you meant to trigger now). When setting the action timing, make sure that it is set to a delay of 1/8th note and not quantized to 1/8th note. | |||
==== Performing actions after another loop has finished a cycle ==== | |||
If you want to an action or actions to be performed after some loop has finished its cycle, you can use the play stop action with stop quantization set to loop followed by the actions you want to perform. If you have play the loop as part of the series of actions, it will play uninterrupted since it will start again as soon as it stopped. | |||
Let's say, you have a loops ''drum loop'' and ''lead loop'' and you want the ''replace'' action to be performed on the ''lead loop'' after the next cycle of ''drum loop''. Use this action sequence: | |||
* Stop ''drum loop'' (stop quantization loop) | |||
* | * [after last] Play ''drum loop'' (probably with quantization set to 1 bar to make sure that it is quantized to the clock) | ||
* | * [with last] Replace ''lead'' loop | ||
* | |||
The after last/with last timings are set by tapping on the dot to the left of the action in the action editor. | |||
== Helpful Hints == | |||
Use quantization when timing needs to be precise and even a millisecond or two would make a difference. | Use quantization when timing needs to be precise and even a millisecond or two would make a difference. | ||
'''Delay Plus Quantization'''. You will sometimes need to have a delay before a quantized event to make sure that it fires on the NEXT quantization interval rather than right now as in the | '''Delay Plus Quantization'''. You will sometimes need to have a delay before a quantized event to make sure that it fires on the NEXT quantization interval rather than right now as in the ''Stop Clip Timing'' example elsewhere on this page. If the clock is at 0, every quantization amount would trigger. For example, if there is a record or play clip action quantized to the master clock (or 1 bar) and it is immediately followed by a stop clip or stop recording action with the same quantization, the stop will happen immediately because the clock will still be at the specified boundary. Using a small delay for the stop action (say an eighth note) ensures that the clock is no longer at the specified boundary and will execute the event at the next appropriate interval.. | ||
'''Dummy Actions'''. If you need to quantize an action after a delay, you may need to create a dummy action that does nothing but delay. If the action itself is a play or stop or record action which has its own quantization settings, set the quantization within that action. If you need to use a "dummy" action to delay, you can add a the Adjust Parameter Clip Action without specifying a target clip or Trigger Widget action without specifying a widget or any action that would do nothing. | '''Dummy Actions'''. If you need to quantize an action after a delay, you may need to create a dummy action that does nothing but delay. If the action itself is a play or stop or record action which has its own quantization settings, set the quantization within that action. If you need to use a "dummy" action to delay, you can add a the Adjust Parameter Clip Action without specifying a target clip or Trigger Widget action without specifying a widget or any action that would do nothing. | ||
== Example Library == | |||
* '''Repeating Actions with a Button and Dial.''' [[Media:EXAMPLE Repeating Widget.zip|This project]] demonstrates one way to set up repeating sequences of actions using a button and a stepped dial. In this example, a button widget triggers a series of actions to play clips in a particular order. There is also a dial that determines whether the button is retriggered when the actions have been completed. | |||
* '''Dial Sequencer'''. [[:File:EXAMPLE Dial Sequencer iPad 1.1.lpproj.zip|This project]] demonstrates two methods of sequencing clips via actions and a stepped dial. One method uses a trigger to advance the clip sequence and the other auto-advances the sequence. | |||
= Related Pages = | = Related Pages = | ||
[[Action List]] | [[Action List]] | ||
[https://loopypro.com/manual/#actions Loopy Pro Manual - Actions Chapter] | [https://loopypro.com/manual/#actions Loopy Pro Manual - Actions Chapter] | ||
Latest revision as of 07:17, 10 September 2025
Loopy Pro's actions can provide control over almost every aspect of Loopy Pro and can be used to create custom behavior. Actions are used by the MIDI Learn/MIDI Binding system, widgets (buttons, sliders, dials, etc), gestures and follow action system to control Loopy Pro.
MIDI Learn
When you MIDI Learn in Loopy Pro, you are creating a MIDI Binding to an action. You can edit that binding via the Control Settings panel. You can modify that options for the action or add additional actions to be performed by the binding.
Action Sequences
Anywhere in Loopy Pro where an action can be used, a series of actions can be used. There will be a "+" icon you can tap to add more actions. For example, if you MIDI Learn Play/Stop for a clip, you can go into Control Settings and find the MIDI binding you created and add more actions to the sequence so that your MIDI binding does more than just toggle play for that clip.
Action Timing
To the left of each action is a white circle. Tapping on the circle pops up a panel to set options for when the action is performed.
By default, the first action happens immediately, and each subsequent action happens one after the other without delay.
When the timing options panel pops up, it will initially be set to Immediate.
When move the timing slider, the choice of Quantization or Delay will appear.
If the timing is set to Quantization, the action is performed at the next time that the clocks aligns with that quantization setting. If the timing is set to Delay, the action happens after Delay of the specified time and is independent of the clock's position. If the clock is not moving, all quantizations fire immediately!
Timing Icons
The circle that appears next to actions indicates the timing/trigger settings.
- An empty circle indicates "With Last"
- A circle with a clock in it indicates "With Last" with delay or quantization
- A circle with a number indicates a "Next Trigger" sequence with the number indicating the trigger number.
- A circle with an arrow indicates "After Last"
Action Timing and Tempo
Timing in Loopy Pro 1.x is always related to musical time/tempo. When the tempo hasn't yet been defined, events with delays or quantization execute immediately. Starting with Loopy Pro 2.0, timing can be set in absolute time (seconds.milliseconds)
After Last/With Last/Next Trigger
The timing options for all but the first action are slightly different from the first action's.
In addition to the choice of Quantization and Delay, the following options appear: After Last, With Last, Next Trigger. The specified quantization or delay is applied. Most actions take next to no time to execute. Stop clip actions are somewhat different as discussed below.
After Last. The action is performed after the previous action is performed (with the specified quantization or delay). Many actions take next to no time to execute (fractions of a millisecond. Some actions, such as play, stop, solo or actions with a specified ramp time, are not considered to have executed until they are "done". What done is depends on the action. See When is After below.
With Last. The action is performed simultaneous with the previous action (with the specified quantization or delay). Use this when you need actions to fire truly simultaneously or for the timing to be precisely based on the previous actions execution time. In some contexts After Last and With Last will seem to be the same, but in some cases it can make a difference. Especially if any action changes something that a subsequent action relies on.
Next Trigger. This action is fired the next time that the action sequence is triggered. For example, you might have a button that the first time it is pressed mutes the bass instrument and records clip 1 and on the second press unmutes the guitar, mutes the bass and records clip 2.
When is After?
Many actions take next to no time to execute (fractions of a millisecond. Some actions, such as play, stop, solo or actions with a specified ramp time, are not considered to have executed until they are "done". What done is depends on the action. Loopy Pro tries to be smart about what done is depending on the context. Here is a list of common actions that may not be done immediately:
- Stop - the action is done when the clip or clips have stopped.
- Play/Solo - the action is done when the targeted clip or clips starts playing. If there is a count-in before the clip starts playing, done is when the clip actually starts playing. If a clip is already clipping, play is done immediately UNLESS the play action has Retrigger turned on. If Retrigger is on, the play action is done when the retriggered count-in finishes.
- Adjust actions with a ramp - if you have an Adjust action, such as Adjust Parameter, with ramp time, the action is done when the ramp finishes.
Using Delays Between Actions
For actions such as play, stop, or solo actions that are quantized, it is sometimes necessary to use After Next with a delay.
For example, let's say your clips use Loop play quantization. If you set up an action sequence of Solo Clip 1 then (after last) Solo Clip 2, Loopy Pro would seem to go directly to soloing clip 2 without first playing clip 1. This is because as soon as clip 1 starts soloing, Loopy Pro queues clip 2 to solo. Clip 2's own quantization criterion is met, so clip 2 starts soloing. In order to prevent this behavior, the action sequence you want is Solo Clip 1 then (after last WITH DELAY) Solo Clip 2.
Delay length. Use a delay of 1/8th note or more. (Loopy has a little grace period when triggering loops so that if you are a little late triggering a loop it doesn't wait for another cycle to complete -- so the delay has to be long enough that Loopy doesn't think you meant to trigger now). When setting the action timing, make sure that it is set to a delay of 1/8th note and not quantized to 1/8th note.
Performing actions after another loop has finished a cycle
If you want to an action or actions to be performed after some loop has finished its cycle, you can use the play stop action with stop quantization set to loop followed by the actions you want to perform. If you have play the loop as part of the series of actions, it will play uninterrupted since it will start again as soon as it stopped.
Let's say, you have a loops drum loop and lead loop and you want the replace action to be performed on the lead loop after the next cycle of drum loop. Use this action sequence:
- Stop drum loop (stop quantization loop)
- [after last] Play drum loop (probably with quantization set to 1 bar to make sure that it is quantized to the clock)
- [with last] Replace lead loop
The after last/with last timings are set by tapping on the dot to the left of the action in the action editor.
Helpful Hints
Use quantization when timing needs to be precise and even a millisecond or two would make a difference.
Delay Plus Quantization. You will sometimes need to have a delay before a quantized event to make sure that it fires on the NEXT quantization interval rather than right now as in the Stop Clip Timing example elsewhere on this page. If the clock is at 0, every quantization amount would trigger. For example, if there is a record or play clip action quantized to the master clock (or 1 bar) and it is immediately followed by a stop clip or stop recording action with the same quantization, the stop will happen immediately because the clock will still be at the specified boundary. Using a small delay for the stop action (say an eighth note) ensures that the clock is no longer at the specified boundary and will execute the event at the next appropriate interval..
Dummy Actions. If you need to quantize an action after a delay, you may need to create a dummy action that does nothing but delay. If the action itself is a play or stop or record action which has its own quantization settings, set the quantization within that action. If you need to use a "dummy" action to delay, you can add a the Adjust Parameter Clip Action without specifying a target clip or Trigger Widget action without specifying a widget or any action that would do nothing.
Example Library
- Repeating Actions with a Button and Dial. This project demonstrates one way to set up repeating sequences of actions using a button and a stepped dial. In this example, a button widget triggers a series of actions to play clips in a particular order. There is also a dial that determines whether the button is retriggered when the actions have been completed.
- Dial Sequencer. This project demonstrates two methods of sequencing clips via actions and a stepped dial. One method uses a trigger to advance the clip sequence and the other auto-advances the sequence.