Skip to content

In key transpose via Global MIDI and sequenced via MIDI clips#837

Merged
m-m-adams merged 28 commits into
SynthstromAudible:communityfrom
0beron:transpose
Feb 18, 2024
Merged

In key transpose via Global MIDI and sequenced via MIDI clips#837
m-m-adams merged 28 commits into
SynthstromAudible:communityfrom
0beron:transpose

Conversation

@0beron

@0beron 0beron commented Dec 16, 2023

Copy link
Copy Markdown
Contributor

Addition of transposition performance and sequencing controls to change scale / key / mode etc

Transpose events will affect all synth and MIDI clips that are set to scale mode, and will stay within the scale note of the starting point, eg if the scale is currently C major, then notes CDEFGAB will change the root note and scale to reach D Dorian, E Phyrgian, F Lydian, G mixolydian, A Aeolian and B Locrian.
Octave will be chosen the be closest to current song root note for the first transpose event after each song load, and subsequent octaves will be obeyed. Eg, song root note == 12 (C, one octave up), any incoming 'D' will move up a second. Subsequent notes will change the octave relative to this starting point. This is to avoid having to guess the song root note when sending the first transpose control note and risking shifting multiple octaves away.

Changing to modes of a different major scale deliberately omitted for now - other notes will be ignored.
Some scheme to control this could be added but this is not fully thought out yet.

  • Global MIDI command that maps a whole channel to transpose behaviour
  • Flash storage for global MIDI command
  • Basic implementation of transpose behaviour
  • Add option to MIDI clips alongside Channels 1-16 and MPE, so that MIDI clips can sequence transpose events internally allowing recording, probability, access via MIDI learn etc.
  • Menu to configure control scheme. Allows chromatic or in-key transpose.
  • Add some kind of chord mode that allows in-key movements but also modulation to another key.
  • MIDI clips routed to transpose must not themselves transpose to avoid recursion!

@0beron 0beron changed the title In key transpose via Global MIDI and sequenced via MIDI clips [DRAFT] In key transpose via Global MIDI and sequenced via MIDI clips Dec 16, 2023
@seangoodvibes seangoodvibes added this to the Release 1.1 milestone Jan 27, 2024
@soymonitus

soymonitus commented Feb 6, 2024

Copy link
Copy Markdown
Collaborator

Hmmm I think this can be tied to the other PR from Sean in which a global midi command / channel can be used to transpose the whole song, or it could be also a shorcut using deluge encoders. The thing is that you could set in settings if the command does chromatic transposition by semitones, or it does this behavior of transposition within scale. That's my opinion. It could make sense to join both features into one, and the user can then decide if the transposition should be done by semitone steps or by scale note jumps, but both options share the same up/down encoder shortcut and global midi channel

A different feature could be that, for clips individually, you could set the clip to either: record notes that are received, or either transpose in scale the existing notes in the sequencer, based on the received notes. This feature is good to program sequences in a synth and have the input midi move the sequence up or down in tone. There are many synths that have this ability!

@0beron 0beron changed the title [DRAFT] In key transpose via Global MIDI and sequenced via MIDI clips In key transpose via Global MIDI and sequenced via MIDI clips Feb 18, 2024
@0beron 0beron marked this pull request as ready for review February 18, 2024 18:19

@m-m-adams m-m-adams left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm - one comment that needs to be moved down a few lines now

Comment thread src/deluge/model/instrument/midi_instrument.cpp Outdated
@m-m-adams m-m-adams enabled auto-merge February 18, 2024 18:47
@m-m-adams m-m-adams added this pull request to the merge queue Feb 18, 2024
Merged via the queue into SynthstromAudible:community with commit 8bf3d77 Feb 18, 2024
@lobit12

lobit12 commented Feb 28, 2024

Copy link
Copy Markdown

how do you enable this feature currently? is it working well enough to try out?

@0beron

0beron commented Feb 28, 2024

Copy link
Copy Markdown
Contributor Author

The feature is in the nightly builds of the community branch and release 1.1

It is described in the documentation in https://github.com/SynthstromAudible/DelugeFirmware/blob/community/docs/community_features.md (Section 3.3. MIDI, then under #837 MIDI control over transpose / scale.)

There's an issue where audition notes getstuck on over a transpose event, which I've fixed but the new PR hasn't been merged yet, it's at #1319

@0beron

0beron commented Feb 28, 2024

Copy link
Copy Markdown
Contributor Author

I'm on the synthstrom discord also if you have any other questions

@lobit12

lobit12 commented Feb 28, 2024

Copy link
Copy Markdown

okay thanks man! do I need an invite to get on the discord ? Im posting alot of dumb 'can you/ how do you' type questions on here and I think this is more a place for devs

@sapphire-arches

Copy link
Copy Markdown
Collaborator

This invite link should work!

tastycode pushed a commit to tastycode/DelugeFirmware that referenced this pull request Jul 3, 2024
…tromAudible#837)

* Midi transpose global command proof of concept

* Force to stay in scale, and corrected indexing

* Snap to nearest scale note on first transposition in new song. Still not
quite right!

* Flash storage. Snapping fixed. Namespace instead of class instance.

* Scale transpose working for new scales

* clang format

* Added menus and chromatic mode

* Added additional MIDI 'channel' to route to transpose. Added menu.

* Updated community features doc

* WIP to prevent MIDI clips routed to transpose from being affected

* Working version with correct scroll for MIDI clips routed to transpose

* Tidy, remove printlns, dbt format

* Restored vscode settings that crept out of a stash

* Removed 'chord' from menu. Suppress transpose popups not from encoders.

* MIDI transpose clips cannot be in scale mode if transpose is chromatic

* Dbt format

* fix comments

---------

Co-authored-by: m-m-adams <mark.adams@queensu.ca>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants