> The digital implementation of frequency modulation starts with a lookup table that holds a digitized sine wave.
> The next step is to modulate the output by adding a modulation signal to the index.
In those paragraphs, you're saying that you start with a table of sine-function values.
This table has (for the sake of example) 4096 different values. I suppose in real life there may be many more.
then you read this table by incrementing an index between 1 and 4096. this happens many times per second and every time you increment the index by one unit. This will output a sine wave at a specific frequency determined by how quickly you increment this index (i.e. how often the table is read out).
So far alright, if you're adding 1 to the index 40960 times every second you'll a sine wave with a 10hz frequency (is this correct?)
but then, instead of adding 1 to the index 40960 times per second, you add 100 every single one of those 40.1k reads of the table? and this generates a sine with a frequency of 1000hz!?
this is quite frankly very surprising to me. The kind of thing I don't see myself coming up with easily; referring to the fact that it's possible to change the output frequency just by jumping around the table (instead of reading it all out one by one jump the index by 100 table entries) while keeping the number of times per second the table is read the same.
Finally, if the index increments themselves are read out from another sine wavetable, you get FM modulation... this is more reasonable but it depends on the previous very surprising (to me) way to change the frequency of a sine wave.
thanks for the great write-ups.