Thanks for doing that; **didn't understand half of it**, but very interesting read!

**About the curves **(...)

I am assuming that the curve is continuous, and its slope does not change much.

Briefly? ddV is from [-1,0,1] , 5 ddV are stored in 1 byte (3^5=243 <256)

One loop to get a new V value for the curve is:

read ddV from stored data

dV = dV + ddV

V = V + dV

I believe this was not clear neither.

Let's say I'd like to pre-crunch some V values.

Instead of storing value V, its slope dV can be stored: dV = V minus its previous value.

Nice! assuming that V is an 8 bit value, dV surely can be stored on 4 (3?) bits.

V dV

0

1 1

2 1

2 0

1 -1

-1 -2

-3 -2

-6 -3

...

Now instead of storing dV, ddV can be stored. ddV= dV minus its previous value.

V dV ddV

0

1 1

2 1 0

2 0 -1

1 -1 -1

-1 -2 -1

-3 -2 0

-6 -3 -1

...

[-1,0,1] these are 3 values; I can stock 5 of them into 1 byte

(since 3 ^ 5 = 243 which is < 256 = 1 byte)

Finally, this is a pre-crunch with a 1:5 ratio.

I've tried o explain the best I could, with my words.

Again: is there any theory about this kind of data storing?

Starting point: assuming that ddV has only 3 values -1,0 or +1.

"Et voilĂ !"