# Block-level merge midi defaults

``

    with_merged_midi_defaults

Specify opt values to be used by any following call to the `midi_*` fns within the specified `do`/`end` block. Merges the specified values with any previous midi defaults, rather than replacing them. After the `do`/`end` block has completed, previous defaults (if any) are restored.

Introduced in v3.0

## Example

# Example 1
``
    midi_note_on :e1

    use_midi_defaults channel: 3, port: "foo"

    midi_note_on :e3

    with_merged_midi_defaults channel: 1 do

      midi_note_on :e2

    end

    midi_note_on :e2
| ``
    # Sends MIDI :e1 note_on with default opts

    # Sends MIDI :e3 note_on to channel 3 on port "foo"

    # Sends MIDI :e2 note_on to channel 1 on port "foo".
    # This is because the call to use_merged_midi_defaults overrode the
    # channel but not the port which got merged in.

    # Sends MIDI :e2 note_on to channel 3 on port "foo".
    # This is because the previous defaults were restored after
    # the call to with_merged_midi_defaults.