Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature / New "Reverse" probability (for sequenced and arpeggiated notes) #3314

Merged
Merged
Show file tree
Hide file tree
Changes from 40 commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
1d208db
Add new “Reverse Probability (RVRS)” parameter for the arpeggiator
soymonitus Jan 20, 2025
0eb311d
docs
soymonitus Jan 20, 2025
cf5e14b
docs
soymonitus Jan 20, 2025
97cb973
Invert reversed bug fix
soymonitus Jan 20, 2025
e9b9e51
Update params also when arp is off
soymonitus Jan 20, 2025
fbd6ea1
docs
soymonitus Jan 21, 2025
4a74ade
format
soymonitus Jan 25, 2025
e04be38
Updated list
soymonitus Jan 25, 2025
24278a8
update loopy files
soymonitus Jan 25, 2025
cebd120
fix docs
soymonitus Jan 25, 2025
7f7c48a
Merge branch 'community' into monitus/arp_reverse_prob
soymonitus Jan 27, 2025
f623782
Fixed bug with Sidechain Level that could not be controlled for both …
soymonitus Jan 31, 2025
528f7ec
Update docs
soymonitus Jan 31, 2025
475699b
Merge branch 'community' into monitus/arp_reverse_prob
soymonitus Feb 1, 2025
c6cc7fa
Fixed crash!
soymonitus Feb 1, 2025
035cd71
Merge branch 'community' into monitus/arp_reverse_prob
soymonitus Feb 4, 2025
add0899
Add horizontal menu for Global Randomizer
soymonitus Feb 4, 2025
fb74a08
Use shorter options for horizontal menus
soymonitus Feb 4, 2025
7536c92
Missing labels
soymonitus Feb 4, 2025
cd93935
initialize variable
soymonitus Feb 5, 2025
91f3dbd
Merge branch 'community' into monitus/arp_reverse_prob
soymonitus Feb 7, 2025
096748b
Merge branch 'community' into monitus/arp_reverse_prob
soymonitus Feb 8, 2025
7735007
Fix typos
soymonitus Feb 8, 2025
4b9fc5e
Lock label for horizontal menus
soymonitus Feb 8, 2025
c245525
add randomizer menu to CV
soymonitus Feb 8, 2025
a0e35fb
Merge branch 'community' into monitus/arp_reverse_prob
soymonitus Feb 8, 2025
fee7312
clang suggestion
soymonitus Feb 10, 2025
0a124bd
suggestions
soymonitus Feb 10, 2025
b5ed021
format
soymonitus Feb 10, 2025
d9cff2c
Merge branch 'community' into monitus/arp_reverse_prob
soymonitus Feb 10, 2025
1c1c56d
Update loopy pro files
soymonitus Feb 10, 2025
e53e90c
Update list of appendix
soymonitus Feb 10, 2025
871f178
Merge branch 'community' into monitus/arp_reverse_prob
soymonitus Feb 10, 2025
7826824
suggestion
soymonitus Feb 10, 2025
d8f718e
Complete automation view param list
soymonitus Feb 11, 2025
b2f27ad
Merge branch 'community' into monitus/arp_reverse_prob
soymonitus Feb 11, 2025
ed6fd2d
Fixed release bug
soymonitus Feb 11, 2025
d333f73
format
soymonitus Feb 12, 2025
647c038
fix missing line
soymonitus Feb 14, 2025
c1360a3
cleanup
soymonitus Feb 15, 2025
e84fd23
Update src/deluge/modulation/arpeggiator.cpp
m-m-adams Feb 15, 2025
14029b3
Update tests/spec/string_spec.cpp
soymonitus Feb 15, 2025
bddafc3
Refactor
soymonitus Feb 15, 2025
e079c0a
Merge branch 'community' into monitus/arp_reverse_prob
stellar-aria Feb 15, 2025
fab0438
fix null derefence
m-m-adams Feb 15, 2025
f4c50ec
make this safe for string views
m-m-adams Feb 15, 2025
a30ef0c
Expose loopy pro template without zip
soymonitus Feb 15, 2025
bf98341
Change name of method
soymonitus Feb 15, 2025
ad78107
format
soymonitus Feb 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 modified contrib/midi_follow/loopy_pro/Deluge Midi Follow.lpproj.zip
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
Loading