Dear Joachim,
I assume You know the appendix “modal frequencies” of the csound manual.
Maybee I can help You with to Udos.
One Udo is for the partials of an ideal bar, following (2n+1)^2 and the other one is for stretched partials (similar to thick strings or something like this).
You will find these opcodes end of the mail.
I don’t remember where I found the formula for stretcged partials but I do remember, that values around 0.0004 are considered as being natural. Off course “insane” values sound also are very interesting.
I personally would be interested in another couple of formulas, e.g. gong, triangle, tomtom, etc.
Here my opcodes (sorry, comments are in german):
/* OPCODE FOR THE PARTIALS OF AN IDEAL BAR
SYNTAX:
StefansXylopartials inumparts,iftab
inumparts = Anzahl der Teiltoene
iftab = tabelle in die geschrieben werden soll, muss eine “leere” Tabelle sein, wie z.B.
iftab ftgen 0,0,16,-2,0 ; leere tabelle
*/
opcode StefansXylopartials, 0,ii
inumparts,iftab xin
indx = 0
inenner = 9
loop:
inZ = indx+1
izaehler = (2*inZ+1)^2
istrp = izaehler/inenner
tableiw istrp, indx, iftab ;writes istart to table
loop_lt indx, 1, inumparts+1, loop
endop
;;;;;
/*OPCODE FOR STRETCHED PARTIALS
SYNTAX:
StefansStretchedPartials inumparts,istreck,iftab
inumparts = Anzahl der Teiltoene
istreck = Streckfaktor, bis ca. 0.01 klavierähnlich, ab dann glockenspielartig
iftab = tabelle in die geschrieben werden soll, muss eine “leere” Tabelle sein, wie z.B.
iftab ftgen 0,0,16,-2,0 ; leere tabelle
*/
opcode StefansStretchedPartials, 0,iii
inumparts,istreck,iftab xin
indx = 0
inenner = sqrt(1+istreck)
loop:
inZ = indx+1
izaehler = inZsqrt(1+istreckinZ^2)
istrp = izaehler/inenner
tableiw istrp, indx, iftab ;writes istart to table
loop_lt indx, 1, inumparts, loop
endop