You then need a bit more clever mechanism than just a simple multiplication.
As you you have plenty of space left in the eeprom (there are only the lowest 7 Bytes used….) you could use a simple Lookup table here.
Use the EEPROM Command to define the EEPROMs content at download (don't forget to remove the #no_data compiler directive….) and look up the EEPROM like this:
First define a WORD variable "lookup_position_word" and a BYTE Variable " lookup_position_byte"
Then change replacing line 355 with something like this:
> lookup_position_word = tempoPot_value*tempoPot_value 'YOU NEED TO READ A WORD VALUE SO THE POSITION IS QUANTIZED BY 2
> lookup_position_word = lookup_position_word + 7 'ADD OFFSET, LOWEST 7 BYTES USED FOR SAVING LFOs STATUS
> IF lookup_position_word > 253 THEN lookup_position_word=253 END IF 'YOU ONLY HAVE 256 BYTES IN EEPROM, SO MAKE SURE YOU DONT OVERRUN. YOU LOOSE THE RIGHTMOST 4 VALUES FROM THE POT
> lookup_position_byte = lookup_position_word 'CONVERT INTO RIGHT VARIABLE FORMAT (THE COMPILER MIGHT DO THIS AUTOMATICALLY BUT I DIDNT TRY
> READ lookup_position_byte, WORD tempo_INC 'READ WORD VARIABLE tempo_inc FROM EEPROM
So now you can store in your EEPROM the direct Values for the Increment, instead of calculating them and use any response curve you would like to extend the range. The values are stored as WORD Variable in Big Endian Order (MSB, LSB) starting at EEPROM Position 7.
Alternatively you could move the Sinus Table from Table Memory to EEPROM Memory and use the TABLE for full 256 Bytes saving you the hassle to check for overrun and give you full 7 Bits for the Tempo (instead of only 121 Values….)