A method for controlling a multi-cylinder spark-ignition engine (10) including a monitored cylinder (11) and a plurality of unmonitored cylinders (12, 13, 14), wherein an in-
cylinder pressure sensor (15) is arranged in the monitored cylinder (11), the method comprising: Monitoring the internal
cylinder pressure for the monitored cylinder (11) during a
combustion event for the monitored cylinder (11) via the
pressure sensor (15); Determining a first
ignition timing (209) for the monitored cylinder (11) based on a desired
ignition timing (211) and the internal
cylinder pressure; Controlling the
ignition timing for the monitored cylinder (11) based on the first ignition timing (209); Monitoring the engine speed and the
crankshaft speed via a rotational
position sensor associated with the monitored cylinder (11) and the non-monitored cylinders (12, 13, 14); Determining a
modal coefficient for the non-monitored cylinders (12, 13, 14) based on the engine speed and the
crankshaft speed pulsations; Determining coefficient errors for the unmonitored cylinders (12, 13, 14) based on the
modal coefficients; performing a compensation control to determine an ignition timing setting for each of the unmonitored cylinders (12, 13, 14) based on the coefficient error; Determining final ignition times for the non-monitored cylinders (12, 13, 14) based on the desired ignition timing (211) and the respective ignition timing setting; and Controlling the ignition timing for each of the non-monitored cylinders (12, 13, 14) based on the respective final ignition timing.