mcp_opendaw_shift_mode
Shift notes in a region from one scale to another, adjusting only the notes that differ between scales while keeping the tonic and unchanged notes intact.
Instructions
Transform notes from one scale/mode to another, keeping the tonic.
Finds which scale degrees differ between from_scale and to_scale, then shifts ONLY the notes on those degrees by the interval difference. The tonic (degree 1) and unchanged degrees stay put — the transformation is surgical, not a blanket snap.
Examples: shift_mode(root_note="A", from_scale="minor", to_scale="dorian") → minor 6th (Ab) becomes major 6th (F#). A minor → A dorian. Only notes on degree 6 shift (+1 semitone). Everything else stays. shift_mode(root_note="E", from_scale="minor", to_scale="phrygian") → degree 2 (F#) becomes F natural (-1 semitone). E minor → E phrygian. shift_mode(root_note="D", from_scale="major", to_scale="mixolydian") → degree 7 (C#) becomes C natural (-1 semitone). D major → D mixolydian. shift_mode(root_note="C", from_scale="minor", to_scale="harmonic_minor") → degree 7 (Bb) becomes B natural (+1 semitone). C minor → C harmonic minor.
Unlike force_scale_notes (snaps to nearest scale tone — can change the melodic shape), shift_mode preserves the contour: notes that are already in the target scale don't move. Only the specific degrees that differ between the two scales are shifted.
Unlike reharmonize_progression (works on chord symbols), shift_mode works on individual notes in a region.
Args: unit_index: AU index (-1 = all AUs). track_index: Note track index (-1 = all note tracks). region_index: Region index (-1 = all regions on track). root_note: Tonic note (C, C#, D, ...). Stays the same for both scales. from_scale: Source scale name. to_scale: Target scale name. preserve_root: If True (default), never shift the tonic pitch class. If False, allow tonic to shift (rare, only for non-modal transformations).
Returns per-note shift details: which pitch classes moved, by how much, and total notes affected.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to_scale | No | dorian | |
| root_note | No | C | |
| from_scale | No | minor | |
| unit_index | No | ||
| track_index | No | ||
| region_index | No | ||
| preserve_root | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |