A method of processing an input signal to produce an output signal for controlling a device having a non-linear response curve, the method comprising: providing a lookup table (32, 54) comprising a plurality of input entries and, for each of the plurality of input entries, a first output entry and a second output entry; searching the lookup table (32, 54) for a lower input entry comprising the one of the input entries having a value less than and closest to that of the input signal, and an upper input entry comprising the one of the input entries having a value greater than and closest to that of the input signal; subtracting the lower input entry from the input signal to obtain a first difference; subtracting the input signal from the upper input entry to obtain a second difference; multiplying the first difference by the first output entry for the upper input entry to obtain a first product; multiplying the second difference by the second output entry for the lower input entry to obtain a second product; and, adding the first product to the second product to obtain the output signal; wherein the provided lookup table (32, 54) is obtainable by performing operations comprising: receiving data representing the non-linear response curve, the data comprising a plurality of input values each having a corresponding output value; selecting a number of points along the non-linear response curve and storing the input values of the selected points as input entries of the lookup table (32, 54); and for each input entry of the lookup table (32, 54): generating a first output entry by dividing the output value corresponding to the input value stored as the input entry by a difference between the input value stored as the input entry and the input value stored as a next lower input entry; and generating a second output entry by dividing the output value corresponding to the input value stored as the input entry by a difference between the input value stored as a next higher input entry and the input value stored as the input entry. providing a lookup table (32, 54) comprising a plurality of input entries and, for each of the plurality of input entries, a first output entry and a second output entry; searching the lookup table (32, 54) for a lower input entry comprising the one of the input entries having a value less than and closest to that of the input signal, and an upper input entry comprising the one of the input entries having a value greater than and closest to that of the input signal; subtracting the lower input entry from the input signal to obtain a first difference; subtracting the input signal from the upper input entry to obtain a second difference; multiplying the first difference by the first output entry for the upper input entry to obtain a first product; multiplying the second difference by the second output entry for the lower input entry to obtain a second product; and, adding the first product to the second product to obtain the output signal; wherein the provided lookup table (32, 54) is obtainable by performing operations comprising: receiving data representing the non-linear response curve, the data comprising a plurality of input values each having a corresponding output value; selecting a number of points along the non-linear response curve and storing the input values of the selected points as input entries of the lookup table (32, 54); and for each input entry of the lookup table (32, 54): generating a first output entry by dividing the output value corresponding to the input value stored as the input entry by a difference between the input value stored as the input entry and the input value stored as a next lower input entry; and generating a second output entry by dividing the output value corresponding to the input value stored as the input entry by a difference between the input value stored as a next higher input entry and the input value stored as the input entry. receiving data representing the non-linear response curve, the data comprising a plurality of input values each having a corresponding output value; selecting a number of points along the non-linear response curve and storing the input values of the selected points as input entries of the lookup table (32, 54); and for each input entry of the lookup table (32, 54): generating a first output entry by dividing the output value corresponding to the input value stored as the input entry by a difference between the input value stored as the input entry and the input value stored as a next lower input entry; and generating a second output entry by dividing the output value corresponding to the input value stored as the input entry by a difference between the input value stored as a next higher input entry and the input value stored as the input entry. generating a first output entry by dividing the output value corresponding to the input value stored as the input entry by a difference between the input value stored as the input entry and the input value stored as a next lower input entry; and generating a second output entry by dividing the output value corresponding to the input value stored as the input entry by a difference between the input value stored as a next higher input entry and the input value stored as the input entry.