mcp_opendaw_double_melody
Double a melody at a parallel interval to thicken or harmonize it, using named intervals or diatonic scale-degree offsets. Supports same-region thickening or cross-track layering.
Instructions
Double a melody at a parallel interval — thickening and harmonization.
Creates a copy of every note in the region shifted by the specified interval. Unlike copy_notes_to_track (chromatic transpose only), this supports named musical intervals and diatonic transposition (stays in key).
Same-region doubling (dest_track_index=-1) thickens the melody in place. Cross-track doubling (dest_track_index set) creates a separate layer — useful for assigning a different instrument to the doubled line.
Intervals (chromatic mode):
octave: +12 semitones (classic doubling)
double_octave: +24 semitones (organ/pipe effect)
fifth: +7 semitones (power chord, open sound)
fourth: +5 semitones (suspended, ambiguous)
third: +4 semitones (major third — use diatonic for correct quality)
sixth: +9 semitones (wide, romantic)
unison: +0 semitones (thickening only, velocity difference)
Diatonic mode (diatonic=True): Uses scale-degree offsets instead of fixed semitones. A diatonic third in C major is +2 scale steps (C→E, D→F, E→G), producing the correct quality (major or minor third) depending on the scale degree. Requires root+scale.
velocity_scale: Doubled line velocity (0.8 = slightly quieter, classic). time_offset: Delay the doubled line (0 = parallel, 0.25 = slight delay).
unit_index: Source AU index. track_index: Source note track index. interval: Named interval (octave/double_octave/fifth/fourth/third/sixth/unison). region_index: Source region (-1 = first region). diatonic: If True, use scale-degree offset (requires root+scale). root: Scale root note (C, C#, D, ... B). scale: Scale name (major, minor, dorian, phrygian, etc.). velocity_scale: Velocity multiplier for doubled notes (0-2). dest_track_index: Destination track (-1 = same region, thickening in place). dest_unit_index: Destination AU (-1 = same as source). time_offset: Beat offset for doubled notes (0 = parallel).
Returns count of notes doubled.
Example:
Octave doubling — thickens melody in place
double_melody(0, 3, "octave", velocity_scale=0.7)
Diatonic thirds on separate track — classic harmony
double_melody(0, 3, "third", diatonic=True, root="C", scale="major", dest_track_index=4, velocity_scale=0.8)
Power-chord doubling
double_melody(0, 3, "fifth", velocity_scale=0.9)
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | C | |
| scale | No | major | |
| diatonic | No | ||
| interval | No | octave | |
| unit_index | Yes | ||
| time_offset | No | ||
| track_index | Yes | ||
| region_index | No | ||
| velocity_scale | No | ||
| dest_unit_index | No | ||
| dest_track_index | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |