The lookup table assumes the full scale input is finite (which it is for a DSP) and is a segment reserved in memory that stores an appropriate output for every possible input. After this table is stored, you pass the lookup table function a number (audio sample). The lookup table increments to the address associated with that particular number and spits the number from the table into the output. Note that this is not valid for time-variant functions such as filters...well, it could be done with way more memory and programming time than what it's worth.

The advantage of a lookup table is that you could build analog circuits and record the exact clipping function instead of trying to mathematically model it. If you build the clipping stage without filtering and size your DC blocking caps to have little or no effect on the signal fed through, then you can get a good measurement of the pure clipping curve. You feed the analog circuit input with a good ramp or triangle wave signal at, say, 100Hz. Adjust analog levels to be feeding the input right at full scale. You would probably have to record many cycles before you just happened to hit every number in the range. Alternately, a person could record the general curve and interpolate everything in between.

{Some explanation: I'm assuming 24-bit A/D conversion. You're sending in a 100Hz signal that traverses the full 24-bit (16 million different numbers) range. At a sampling frequency of 48kHz, you can get a maximum of 48,000 distinctly different numbers in a second, and that assumes the clock was synchronized with your signal so that it hit a different group on every cycle). It would take a minimum of 6 minutes to have a chance at measuring a value for every single number in the range. In reality it would probably take several hours before you had 16 million unique numbers stored in a lookup table. I hope that makes sense.

If you were just to record a few cycles of the signal, then you would have a patchy set that represents the general curve throughout full-scale. Then one could interpolate each number in between to obtain a reasonably accurate full-scale lookup-table}

For the table's operation, whenever you get a signal on the input in the future, the DSP algorithm looks in column "A" for a match, then outputs the corresponding value from column "B", which is the recorded output of the clipper.

To do this simply, you don't really need to store two columns of data in EEPROM. If processing 24 bits, you allocate 2^24 (16e6) addresses to represent every value within the full-scale range. If the input sample at some arbitrary time is 2,014, then the DSP will recall the value stored in address {[buffer start address] + 2014} , and put that into the audio processing path instead of computing that number from a mathematical model. You trade processing expense for memory. Without a lookup table, the DSP does these same calculations over and over and over again and always comes up with the same result. If you are needing to save some CPU clock cycles for other tasks (like filters), the lookup table is a must.

The lookup table philosophy says, "we'll only crunch the numbers once". Unless the mathematical formula is really simple (like a+b), a read from memory can really save your CPU from unnecessary exercise.