---
tag: m0166
title: Gradient Mix
brief: Set a Gradient Mix
author: thinkyhead

group: mixing
since: 2.0.0
requires: MIXING_EXTRUDER, GRADIENT_MIX

codes: [ M166 ]
related: [ M163, M164, M165 ]

notes: Requires `MIXING_EXTRUDER` and `GRADIENT_MIX`.

parameters:

- tag: A
  optional: false
  description: Starting Z Height. (Use `Z` to set the Ending Z Height.)
  values:
  - tag: linear
    type: float

- tag: Z
  optional: false
  description: Ending Z Height. (Use `A` to set the Starting Z Height.)
  values:
  - tag: linear
    type: float

- tag: I
  optional: false
  description: Starting Virtual Tool. The Gradient begins with this tool-mix. Below the Starting Z Height the Starting Virtual Tool fully applies.
  values:
  - tag: index
    type: int

- tag: J
  optional: false
  description: Ending Virtual Tool. The Gradient transitions to this tool-mix as Z approaches the Ending Z Height. Above the Ending Z Height the Ending Virtual Tool fully applies.
  values:
  - tag: index
    type: int

- tag: S
  optional: true
  description: Enable/disable the gradient in manual mode. When using the tool index alias, tool-change commands determine whether or not the gradient is enabled.
  values:
  - tag: enable
    type: bool

- tag: T
  optional: true
  description: A tool index to reassign to the gradient. If no index is given, cancel the tool assignment.
  values:
  - tag: index
    type: int

examples:

- pre: Gradient for a tall vase
  post: In this example no tool index is assigned to the Gradient. So the Gradient is enabled using `M166 S1` and disabled with `M166 S0`.
  code: M166 A0 Z250 I0 J1 S1

- pre: Gradient as a Virtual Tool
  post: In this example the Gradient has been given a tool alias of 3. So the Gradient is selected with `T3`, and all other `Tn` commands will select a static mix.
  code:
  - M166 A0 Z250 I0 J1 T3
  - T3

- pre: To use the static mix stored in T0…
  code:
  - M166 T
  - T0

---

Use `M166` to set a gradient that will be automatically updated as the Z position changes during a print. The gradient smoothly transitions from one virtual tool to another between the given starting and ending Z heights. Below the starting height the starting virtual tool fully applies, and above the ending height the ending virtual tool fully applies.
