| I am in the midst of implementing general-purpose linear algebra opcodes for Csound in the orchestra language.
These involve creating real and complex vectors and matrices, getting and setting elements, elementwise arithmetic, various norms, trace, determinant, array-array arithmetic (e.g. dot product), inverse, LU decomposition, QR decomposition, and QR-based eigenvalue and eigenvector decomposition. Creation happens only at i-rate, all other operations can happen at i-rate or k-rate. There are conversions to and from a-rate signals, function tables, and f-sigs.
I am about half-way done with this work.
I have a question for Victor and other developers of the PVS opcodes. I see from the documentation that the pvs opcodes actually fire not at k-rate, but a rate determined by the FFT width and windowed overlap.
It does not make sense to implement this for the linear algebra opcodes, but I need to understand how to make the array operations synchronize with the f-sig variables. Is it ever the case that the f-sigs change at the same rate as k-rate, or an integral multiple or divisor of k-rate? If so, what is the governing relation so that a user of linear algebra with f-sig variables can remain synchronized with them? If there is an integral ratio between the f-sig rate and k-rate, then the user can program linear algebra operations at that ratio, e.g. if an f-sig changes 1/2 as often as k-rate, then the user can operate on that f-sig only every other k-period (obviously, it has to be just the right period!).
Does doing this make sense? Does one fsig ever contain more than one window's worth of data?
Thanks,
Mike
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Csound-devel mailing list
Csound-devel@lists.sourceforge.net |