Skip to content

Commit

Permalink
Feature / New "Reverse" probability (for sequenced and arpeggiated no…
Browse files Browse the repository at this point in the history
…tes) (#3314)

* Add new “Reverse Probability (RVRS)” parameter for the arpeggiator

* docs

* docs

* Invert reversed bug fix

* Update params also when arp is off

* docs

* format

* Updated list

* update loopy files

* fix docs

* Fixed bug with Sidechain Level that could not be controlled for both synth and kit affect-entire

* Update docs

* Fixed crash!

* Add horizontal menu for Global Randomizer

* Use shorter options for horizontal menus

* Missing labels

* initialize variable

* Fix typos

* Lock label for horizontal menus

* add randomizer menu to CV

* clang suggestion

* suggestions

* format

* Update loopy pro files

* Update list of appendix

* suggestion

* Complete automation view param list

* Fixed release bug

* format

* fix missing line

* cleanup

* Update src/deluge/modulation/arpeggiator.cpp

Co-authored-by: Katherine Whitlock <[email protected]>

* Update tests/spec/string_spec.cpp

Co-authored-by: Katherine Whitlock <[email protected]>

* Refactor

* fix null derefence

* make this safe for string views

* Expose loopy pro template without zip

* Change name of method

* format

---------

Co-authored-by: Mark Adams <[email protected]>
Co-authored-by: Katherine Whitlock <[email protected]>
  • Loading branch information
3 people authored Feb 15, 2025
1 parent 43da502 commit a495e10
Show file tree
Hide file tree
Showing 53 changed files with 503 additions and 246 deletions.
10 changes: 8 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,12 @@ at velocity 0 it would look the same as its tail (but you can't have 0 velocity)
- If scale mode is active, you can now check the current root note and scale by long pressing the scale button. On 7SEG it will display the root note on press and scale on release.
- Long pressing the scale button will not result in entering or exiting scale mode so you can safely check the current root note and scale without accidentally exiting scale mode.

##### Velocity Spread
- Added `Velocity Spread` parameter into a `Randomizer` submenu for Sound instruments. This parameters is shared with the arpeggiator and lets you apply some random variation to the notes.
##### Randomizer submenu
- Added a new submenu to the `Sound` menu called `Randomizer`. This menu gives you access to the following parameters (which affect both sequenced and arpeggiated notes):
- `Lock`: This parameter determines whether the randomized values will be locked to fixed values. If you change any of the randomizer parameters, the sequence of randomized values will change to a new one and will be locked again.
- `Velocity Spread`: This parameters lets you apply some random variation to the notes.
- `Note probability`: This parameter determines the likelihood of a note being played or not (this is in addition to the Note/Row probability).
- `Reverse Probability`: This parameter determines the likelihood of a note's sample of being reversed.

##### Note / Note Row Probability, Iterance, Fill
- Enhanced existing note probability, iteration and fill function functionality by enabling you to use each type independently. This means that you can now apply probability to iteration and fill and you can also apply iteration to fill.
Expand Down Expand Up @@ -157,8 +161,10 @@ also affect normal sequenced notes while arpeggiator is Off.
- Added `STEP REPEAT (REPE)` paramater (with values 1 to 8) that makes walked notes in the pattern be repeated X times before moving to the next note+octave in the pattern.
- Added `CHORD PROBABILITY (CHRD)` paramater that will allow you to control the chance of a note to play, at the same time, itself and other notes to form a chord (5th, 3rd and 7th).
- Added `CHORD POLYPHONY (POLY)` paramater that works together with the previous parameter, and this one will dictate how big is the chord, that is, how many notes will be played at the same time.
- Added `REVERSE PROBABILITY (RVRS)` paramater that will allow you to control the chance of a sound to invert the `Reverse` setting for that note. This parameter will only affect oscillators whose type is `Sample` (it does not affect wavetables, SCW, or standard waveforms).
- Added `LOCK` parameter to allow you to freeze the current set of randomized values so the sequence has a repeatable pattern.
- Added new `WALK1`, `WALK2`, `WALK3` and `PATTERN` note modes.
- Exposed several parameters from the `Randomizer` also for non-arpeggiated notes: `Velocity Spread`, `Note probability`, and `Reverse Probability`.

### MIDI

Expand Down
Binary file not shown.
Binary file not shown.
Binary file modified contrib/midi_follow/loopy_pro/loopy-pro-template-snapshot.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 17 additions & 3 deletions docs/features/arpeggiator.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,15 +59,15 @@ setting how many times they are repeated, and setting the direction in which the
different than Random, then the pattern will play, in the same octave, the same number of random
notes as notes are in the held chord and then move to a different octave based on the Octave Mode.
Tip: Set also Octave Mode to Random to have the equivalent to the old `Random` mode.
- `Walk1 (WALK1)` is the "slow" walk and next note is selected this way:
- `Walk1 (WLK1)` is the "slow" walk and next note is selected this way:
- 30% of probability to walk the sequence a step in reverse.
- 30% of probability to just repeat the same step of the sequence.
- 40% of probability to walk the sequence a step forward (as normal).
- `Walk2 (WALK2)` is the "normal" walk and next note is selected this way:
- `Walk2 (WLK2)` is the "normal" walk and next note is selected this way:
- 25% of probability to walk the sequence a step in reverse.
- 25% of probability to just repeat the same step of the sequence.
- 50% of probability to walk the sequence a step forward (as normal).
- `Walk3 (WALK3)` is the "fast" walk and next note is selected this way:
- `Walk3 (WLK3)` is the "fast" walk and next note is selected this way:
- 20% of probability to walk the sequence a step in reverse.
- 20% of probability to just repeat the same step of the sequence.
- 60% of probability to walk the sequence a step forward (as normal).
Expand Down Expand Up @@ -157,6 +157,8 @@ The following parameters are all **automatable** and **learnable** to golden kno
generated and locked.
- Tip 3: If you want some parameters to be locked, but not others, add some automation variation in the clip to those,
so the dice is re-rolled and hence you always get fresh new random values for them, while the others have fixed values.
Note: you can find this parameter also at the root level of the sound menu, under `Randomizer`, because this flag is also applied for
both sequenced notes and arpeggiated notes.
- **`Octave Spread (OCTA)`**: The note will get a change in pitch of a random amount of octaves, going from 0 up to a maximum of +3 octaves.
- **`Gate Spread (GATE)`**: The gate of the arp step will get a random **positive** or **negative** deviation from the base gate.
- **`Velocity Spread (VELO)`**: The velocity of the arp step will get a random **positive** or **negative** deviation from the base velocity.
Expand All @@ -176,9 +178,21 @@ The following parameters are all **automatable** and **learnable** to golden kno
as a chord. The size of the chord is determined by the `Chord Polyphony` parameter.
- **`Note Probability (NOTE)`**: It applies a probability for notes to play or not (after Rhythm has been evalutated,
that is, only for `note` steps, not for `silent` steps).
Note: you can find this parameter also at the root level of the sound menu, under `Randomizer`, because this parameter affects
both sequenced notes and arpeggiated notes.
- **`Bass Probability (BASS)`**: It applies a chance of replacing the current note to be played with the lowest note of arpeggiator
pattern. The higher the value, the more likely that the note played is the bass note of the arpeggiated chord.
This can be used as a performance tool to open up or close the arpeggio's pitch range.
- **`Reverse Probability (RVRS)`**: It applies a chance of inverting the `Reverse` sample setting just for the current note to be played.
This probability only affects the oscillator whose type is set to `Sample`.
Note: you can find this parameter also at the root level of the sound menu, under `Randomizer`, because this parameter affects
both sequenced notes and arpeggiated notes.

The randomizer's parameters that are also available for non-arpeggiated notes are:
- `Lock Randomizer (LOCK)`
- `Velocity Spread (VELO)`
- `Note Probability (NOTE)`
- `Reverse Probability (RVRS)`

### MPE
This submenu contains parameters that are useful if you have an MPE controller connected to the Deluge:
Expand Down
49 changes: 25 additions & 24 deletions docs/features/automation_view.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
# Description

Automation View is a new view that complements the existing Arranger and Clip Views.

- The Automation Arranger View is accessed from within Arranger View by pressing the Shift + Song buttons
- Note: the automation arranger view editor for a specific parameter can be accessed directly from the arranger song menu for that parameter (e.g. the one you would access by pressing on select encoder or by using the shift + shortcut buttom combo) by pressing the Song button while in the parameter value.
- Note: the automation arranger view editor for a specific parameter can be accessed directly from the arranger song menu for that parameter (e.g. the one you would access by pressing on select encoder or by using the shift + shortcut buttom combo) by pressing the Song button while in the parameter value.
- The Automation Clip View is accessed from within the Clip View by pressing the Clip button
- Note: the automation clip view editor for a specific parameter can be accessed directly from the clip sound menu for that parameter (e.g. the one you would access by pressing on select encoder or by using the shift + shortcut buttom combo) by pressing the Clip button while in the parameter value.
- Note: the automation clip view editor for a specific parameter can be accessed directly from the clip sound menu for that parameter (e.g. the one you would access by pressing on select encoder or by using the shift + shortcut buttom combo) by pressing the Clip button while in the parameter value.

It allows you to edit automatable parameters on a per step basis at any zoom level.

Automatable Parameters are broken down into four categories for Automation View purposes:

1. Automatable Clip View Parameters for Synths and Kits with a row selected and affect entire DISABLED

>The 70 parameters that can be edited are:
> The 71 parameters that can be edited are:
>
> - **Master** Level, Pitch, Pan
> - **LPF** Frequency, Resonance, Morph
Expand All @@ -31,7 +32,7 @@ Automatable Parameters are broken down into four categories for Automation View
> - **LFO 1** Rate
> - **LFO 2** Rate
> - **Mod FX** Offset, Feedback, Depth, Rate
> - **Arp** Rate, Gate, Note Probability, Ratchet Probability, Ratchet Amount, Sequence Length, Bass Probability, ChordProbability, Rhythm, Chord Polyphony, Spread Velocity, Spread Gate, Spread Octave
> - **Arp** Rate, Gate, Note Probability, Reverse Probability, Bass Probability, Ratchet Amount, Ratchet Probability, Chord Probability, Chord Polyphony, Rhythm, Sequence Length, Spread Velocity, Spread Gate, Spread Octave
> - **Noise** Level
> - **Portamento**
> - **Stutter** Rate
Expand All @@ -40,11 +41,11 @@ Automatable Parameters are broken down into four categories for Automation View
> - **Mono Expression** Y (Mod Wheel)
> - **Mono Expression** Z (Channel Pressure / Aftertouch)
>You can also edit any patch cables that are created
> You can also edit any patch cables that are created
2. Automatable Clip View Parameters for Kits with affect entire ENABLED, and Audio Clips

>The 26 parameters that can be edited are:
> The 26 parameters that can be edited are:
>
> - **Master** Level, Pitch, Pan
> - **LPF** Frequency, Resonance, Morph
Expand All @@ -60,7 +61,7 @@ Automatable Parameters are broken down into four categories for Automation View
3. Automatable Parameters for Arranger

>The 22 parameters that can be edited are:
> The 22 parameters that can be edited are:
>
> - **Master** Level, Pan
> - **LPF** Frequency, Resonance, Morph
Expand All @@ -80,9 +81,9 @@ Simply enter the modulation menu that displays `SOURCE -> DESTINATION` and then

5. Automatable CC's for MIDI Clips

>You can automate MIDI CC's 0-119, along with Pitch Bend and After Touch. Note: Mod Wheel is MIDI CC 1.
>In Automation View for MIDI Clips, MIDI CC's have been mapped to grid shortcuts using the template file from MIDI Follow Mode (MIDIFollow.XML). So if you want to change what CC's map to what grid shortcuts in the Automation View for MIDI Clips, you would need to edit the MIDIFollow.XML template for MIDI Follow mode.
>See Appendix below for an overview of the MIDI CC to Grid Shortcut mappings
> You can automate MIDI CC's 0-119, along with Pitch Bend and After Touch. Note: Mod Wheel is MIDI CC 1.
> In Automation View for MIDI Clips, MIDI CC's have been mapped to grid shortcuts using the template file from MIDI Follow Mode (MIDIFollow.XML). So if you want to change what CC's map to what grid shortcuts in the Automation View for MIDI Clips, you would need to edit the MIDIFollow.XML template for MIDI Follow mode.
> See Appendix below for an overview of the MIDI CC to Grid Shortcut mappings
Automation View can be thought of as a layer sitting on top of the Arranger View and Clip View for Synths, Kits, MIDI, and Audio clip types.

Expand All @@ -93,11 +94,11 @@ For Non-Audio Instrument Clip Types (Synths, Kits, and MIDI), the sidebar from t
The Automation View functionality covered by this feature can be broken down into these sections:

1. Entering/Exiting the Automation View
4. Automation Overview
5. Parameter Selection
6. Automation Editor
7. Button Shortcuts/Combos
8. Default Settings (Enhancements to the existing Arranger / Clip View behaviours)
2. Automation Overview
3. Parameter Selection
4. Automation Editor
5. Button Shortcuts/Combos
6. Default Settings (Enhancements to the existing Arranger / Clip View behaviours)

A more detailed break-down of the above sections is found below.

Expand Down Expand Up @@ -194,9 +195,9 @@ The Automation Editor **will:**
- enable you to quickly change parameters in focus for editing by turning select or using shift + shortcut pad or going back to automation overview using affect entire or shift/audition pad + clip
- enable you to view the current parameter value setting for the parameters that are currently automatable.
- illuminate each pad row according to the current value within the range of 0-128. E.g. bottom pad = 0-16, then 17-32, 33-48, 49-64, 65-80, 81-96, 97-112, 113-128)
> **Update** The values displayed in automation view have been updated to display the same value range displayed in the menu's for consistency across the Deluge UI. So instead of displaying 0 - 128, it now displays 0 - 50. Calculations in automation view are still being done based on the 0 - 128 range, but the display converts it to the 0 - 50 range.
> **Update** The values displayed in automation view have been updated to display the same value range displayed in the menu's for consistency across the Deluge UI. So instead of displaying 0 - 128, it now displays 0 - 50. Calculations in automation view are still being done based on the 0 - 128 range, but the display converts it to the 0 - 50 range.
- edit new or existing parameter automations on a per step basis, at any zoom level across the entire timeline. Each row in a step column corresponds to a range of values in the parameter value range (0-128) (see above). If you press the bottom row, the value will be set to 0. if you press the top row, the value will be set to 128. Pressing the rows in between increments/decrements the value by 18.29 (e.g. 0, 18, 37, 55, 73, 91, 110, 128).
> **Update** The values displayed in automation view have been updated to display the same value range displayed in the menu's for consistency across the Deluge UI. So instead of displaying 0 - 128, it now displays 0 - 50. Calculations in automation view are still being done based on the 0 - 128 range, but the display converts it to the 0 - 50 range.
> **Update** The values displayed in automation view have been updated to display the same value range displayed in the menu's for consistency across the Deluge UI. So instead of displaying 0 - 128, it now displays 0 - 50. Calculations in automation view are still being done based on the 0 - 128 range, but the display converts it to the 0 - 50 range.
<img width="297" alt="Screenshot 2024-03-16 at 5 13 50 PM" src="https://github.com/seangoodvibes/DelugeFirmware/assets/138174805/3d5dded1-efc2-4cb6-ad07-df2942fdc66e">

Expand All @@ -217,7 +218,7 @@ The Automation Editor **will:**

> **Note 1:** to enter long multi-step automations across multiple grid pages you will need to zoom out as both pads pressed must be visible on the grid). Values in between steps are linearly calculated based on the value corresponding to the pads pressed. For example: you could program a sweep up from value 0 to value 128 by pressing and holding on pad 0,0 and then pressing on pad 15,8).
> **Note 2:** with interpolation turned off, the values between pads will sound like they are changing in a step fashion. to smooth out these values, turn interpolation on before entering your long multi-step automation. By playing with the interpolating setting you could create hybrid parameter changes that sound smooth and stepped.
> **Note 2:** with interpolation turned off, the values between pads will sound like they are changing in a step fashion. to smooth out these values, turn interpolation on before entering your long multi-step automation. By playing with the interpolating setting you could create hybrid parameter changes that sound smooth and stepped.
![IMG_5827](https://github.com/SynthstromAudible/DelugeFirmware/assets/138174805/890970a0-2496-40e9-926c-9a9bd5697c0a)

Expand Down Expand Up @@ -403,23 +404,23 @@ Through the `Settings/Defaults/Automation/Disable Audition Pad Shortcuts` submen

2. Press play.

5. Switch to Automation Clip View
3. Switch to Automation Clip View

6. Enter the Automation Editor for a Parameter, e.g. LPF Frequency is a good one
4. Enter the Automation Editor for a Parameter, e.g. LPF Frequency is a good one

7. Now start drumming on the LPF Frequency Automation Lanes and see how much fun you can have adjusting automation with all your fingers at once
5. Now start drumming on the LPF Frequency Automation Lanes and see how much fun you can have adjusting automation with all your fingers at once

## Editing Automations with your left hand and playing the piano roll with your right hand

1. While in the Automation Clip View, start playing the Piano roll in the sidebar

2. While you're playing the Piano roll, use your left hand to select the parameters you want to edit. E.g. while holding an audition pad you can press the clip button to go back to the Automation Overview and select a Parameter.

4. Select a Parameter and enter the Automation Editor and while you're playing the Piano roll with your right hand, start adjusting the automation lanes with your left hand
3. Select a Parameter and enter the Automation Editor and while you're playing the Piano roll with your right hand, start adjusting the automation lanes with your left hand

5. Quickly switch back to the Automation Overview and select another Parameter
4. Quickly switch back to the Automation Overview and select another Parameter

6. Keep the flow going! Playing the Piano roll and switching between all the Parameters at the same time to create some amazing rhythmic sounds
5. Keep the flow going! Playing the Piano roll and switching between all the Parameters at the same time to create some amazing rhythmic sounds

# Development Notes

Expand Down
4 changes: 2 additions & 2 deletions docs/features/midi_follow_mode.md
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ In this case, you will need to ensure that MIDI Feedback Filter Responses is set

## Appendix A - List of Deluge Parameters with Default Mapped CC's

<img width="470" alt="image" src="https://github.com/user-attachments/assets/8e64ae13-7864-42a2-b537-a5f8d909efa4">
<img width="470" alt="image" src="https://github.com/user-attachments/assets/c9695d8a-04e5-47e7-84d3-fd3889a08385">

## Appendix B - Loopy Pro Template for Deluge MIDI Follow Mode

Expand Down Expand Up @@ -219,7 +219,7 @@ For users of Loopy Pro, you will find a MIDI Follow template in this folder: [MI
- Open again the "Deluge Midi Follow" project and click the pencil to edit the UI, and drag a rectangle selection all the page.
Copy it, open your own project and in an empy page, paste it. Do the same with the other page with Stepped Dials.

<img alt="image" src="https://github.com/SynthstromAudible/DelugeFirmware/blob/316279c5e091cdeb7d50828e407789966fb53abc/contrib/midi_follow/loopy_pro/loopy-pro-template-snapshot.png">
<img alt="image" src="https://raw.githubusercontent.com/SynthstromAudible/DelugeFirmware/refs/heads/community/contrib/midi_follow/loopy_pro/loopy-pro-template-snapshot.png">

## Appendix C - Touch OSC Template for Deluge MIDI Follow Mode

Expand Down
Loading

0 comments on commit a495e10

Please sign in to comment.