diff --git a/Marlin/src/feature/mixing.cpp b/Marlin/src/feature/mixing.cpp index ff4755b1d..b1054c294 100644 --- a/Marlin/src/feature/mixing.cpp +++ b/Marlin/src/feature/mixing.cpp @@ -35,12 +35,21 @@ float mixing_factor[MIXING_STEPPERS]; // Reciprocal of mix proportion. 0.0 = off float mixing_virtual_tool_mix[MIXING_VIRTUAL_TOOLS][MIXING_STEPPERS]; void mixing_tools_init() { - // Initialize mixing to 100% color 1 - for (uint8_t i = 0; i < MIXING_STEPPERS; i++) - mixing_factor[i] = (i == 0) ? 1.0 : 0.0; - for (uint8_t t = 0; t < MIXING_VIRTUAL_TOOLS; t++) + // Virtual Tools 0, 1, 2, 3 = Filament 1, 2, 3, 4, etc. + for (uint8_t t = 0; t < MIXING_VIRTUAL_TOOLS && t < MIXING_STEPPERS; t++) for (uint8_t i = 0; i < MIXING_STEPPERS; i++) - mixing_virtual_tool_mix[t][i] = mixing_factor[i]; + mixing_virtual_tool_mix[t][i] = (t == i) ? 1.0 : 0.0; + + // Remaining virtual tools are 100% filament 1 + #if MIXING_STEPPERS < MIXING_VIRTUAL_TOOLS + for (uint8_t t = MIXING_STEPPERS; t < MIXING_VIRTUAL_TOOLS; t++) + for (uint8_t i = 0; i < MIXING_STEPPERS; i++) + mixing_virtual_tool_mix[t][i] = (i == 0) ? 1.0 : 0.0; + #endif + + // Initialize mixing to tool 0 color + for (uint8_t i = 0; i < MIXING_STEPPERS; i++) + mixing_factor[i] = mixing_virtual_tool_mix[0][i]; } #endif // MIXING_VIRTUAL_TOOLS > 1