pvsmaska — Modify amplitudes using a function table, with dynamic scaling.

*ifn* -- The f-table to use. Given fsrc has N analysis bins, table ifn must be of size N or larger. The table need not be normalized, but values should lie within the range 0 to 1. It can be supplied from the score in the usual way, or from within the orchestra by using *pvsinfo* to find the size of fsrc, (returned by pvsinfo in inbins), which can then be passed to ftgen to create the f-table.

*kdepth* -- Controls the degree of modification applied to fsrc, using simple linear scaling. 0 leaves amplitudes unchanged, 1 applies the full profile of ifn.

Note that power-of-two FFT sizes are particularly convenient when using table-based processing, as the number of analysis bins (inbins) is then a power-of-two plus one, for which an exactly matching f-table can be created. In this case it is important that the f-table be created with a size of inbins, rather than as a power of two, as the latter will copy the first table value to the guard point, which is inappropriate for this opcode.

Warning | |
---|---|

It is unsafe to use the same f-variable for both input and output of pvs opcodes. Using the same one might lead to undefined behavior on some opcodes. Use a different one on the left and right sides of the opcode. |

**Example 364. Example (using score-supplied f-table, assuming fsig fftsize = 1024)**

; score f-table using cubic spline to define shaped peaks f1 0 513 8 0 2 1 3 0 4 1 6 0 10 1 12 0 16 1 32 0 1 0 436 0 asig buzz 20000,199,50,1 ; pulsewave source fsig pvsanal asig,1024,256,1024,0 ; create fsig kmod linseg 0,p3/2,1,p3/2,0 ; simple control sig fsig2 pvsmaska fsig,2,kmod ; apply weird eq to fsig aout pvsynth fsig2 ; resynthesize, dispfft aout,0.1,1024 ; and view the effect