Ah, I realize I actually wrote a UDO that did what I was about to do,
and it's in the article TIm mentioned here:
http://www.csounds.com/journal/2006summer/controlFlow_part2.html
I've pasted below another example though renaming the opcode to multioscil3.
steven
sr=44100
ksmps=1
nchnls=2
ga_bluemix_1_0 init 0
ga_bluemix_1_1 init 0
ga_bluesub_Master_0 init 0
ga_bluesub_Master_1 init 0
gitab2 ftgen 3, 0, 16, -2, 1, 1, 2.174, .5, 3.2, .4, 4.7, .225, \
5.234, .1625, 6.05, .03125, 0,0,0,0
gi_sine ftgen 0, 0, 65537, 10, 1
opcode multioscil3,a,ikko
itable, kenv, kpch, i_index xin
itablesize = ftlen(itable)
ifreq tablei i_index, itable
iamp tablei i_index + 1, itable
kfreq = kpch * ifreq
if (iamp > 0) then
asig oscil3 iamp, kfreq, gi_sine
else
asig = 0
endif
kcount = 0
kenv_local = kenv
loopStart:
kenv_local = kenv_local * kenv
loop_lt kcount, 2, i_index + 2, loopStart
asig = asig * kenv_local
aout = asig
if (i_index < itablesize - 2) then
anextsig multioscil3 itable, kenv, kpch, i_index + 2
aout = aout + anextsig
endif
if (i_index == 0) then
aout balance aout, asig
endif
xout aout
endop
opcode blueEffect0,aa,aa
ain1,ain2 xin
aout1, aout2 reverbsc ain1, ain2, 0.85, 8000.0
aout1 = (ain1 * 0.3) + (aout1 * (1 - 0.3))
aout2 = (ain2 * 0.3) + (aout2 * (1 - 0.3))
xout aout1,aout2
endop
instr 1 ;multioscil3
ipch = cpspch(p4)
iamp = ampdb(p5)
kenv linseg 0, p3 * .5, 1, p3 * .5, 0
aout multioscil3 gitab2, kenv, ipch
aout = aout * iamp
ga_bluemix_1_0 = ga_bluemix_1_0 + aout
ga_bluemix_1_1 = ga_bluemix_1_1 + aout
endin
instr 2 ;Blue Mixer Instrument
ga_bluemix_1_0, ga_bluemix_1_1 blueEffect0 ga_bluemix_1_0, ga_bluemix_1_1
ga_bluesub_Master_0 sum ga_bluesub_Master_0, ga_bluemix_1_0
ga_bluesub_Master_1 sum ga_bluesub_Master_1, ga_bluemix_1_1
outc ga_bluesub_Master_0, ga_bluesub_Master_1
ga_bluemix_1_0 = 0
ga_bluemix_1_1 = 0
ga_bluesub_Master_0 = 0
ga_bluesub_Master_1 = 0
endin
i1 0.0 8.328125 8.00 80
i1 1.90625 7.03125 7.02 80
i1 3.84375 5.78125 9.05 80
i2 0 13.625
e
On 8/30/07, Steven Yi wrote:
> For UDO's, besides the manual there is the repository available at:
>
> http://www.csounds.com/udo/
>
> I'm surprised there isn't an example of an oscillator bank opcode
> there. I was going to write one the other day anyways so one can use
> gen 10 style table but using gen 2 so one can write fractional
> frequency multipliers (gen 10 would truncate the freq as it was non
> whole multiplier when generating table). Perhaps that doesn't make
> sense, but I'll submit something later today and that should be
> clearer as to its use.
>
> As for python, I highly recommend it as a programming language for
> score work or any programming work. Very versatile and generally easy
> to pick up and go.
>
> steven
>
>
>
> On 8/30/07, ad80a wrote:
> >
> > Many thanks...and many thanks to Tim.
> >
> > So...I'll start to study UDO...I'think all the information I need are on the
> > canonical manual, they are'nt?
> > What I need is really this sort of orientation...to know were I've to look
> > for my tasks...
> > Another thing I think will became a need very soon...once I've created this
> > sort of recursive opcode that generate a "cluster" of signal generators
> > (even of synth structures or other UDOs I think), there is a way to global
> > CONTROL that, I think with arrays of number in ftables, assigning, by
> > indexing, different values to different parameters...I think this will be an
> > efficent way to globally change parameters of dozens of unit
> > generators...Where I've to look for this kind of problems?
> > It's very intresting this sort of algoritmic creation of signal STRUCTURES
> > and control parameters...It can simplify the crations of very complex
> > instruments...
> > Can learning python scripting enhance my possibilities in that direction or
> > the "basic" csound language can achieve all these task alone?
> > Thanks for your patience...
> >
> > Steven Yi wrote:
> > >
> > > This approach will not work for a couple of reasons. One is the that
> > > the "if" is at i-time, so will loop four times during initialization.
> > > Second is that you did use an arate loop, you still can not run an
> > > oscillator like this. What you will end up doing is effectively
> > > running a single oscillator at x times the normal rate. I assume you
> > > want x number of different distinct oscilators. The only way to do
> > > that in Csound is to use a recursive User-Defined Opcode.
> > >
> > > steven
> > >
> > >
> > > On 8/30/07, ad80a wrote:
> > >>
> > >> I'm trying to do what I call an "accumulator" (I don't know if this the
> > >> right
> > >> definition...in english).
> > >> In few words I would like to create an oscillator
> > >>
> > >> ares oscili iamp, ifrequ, ifn
> > >>
> > >> and the create a sort of loop that changes parameters of this oscillator
> > >> and
> > >> mix it with prevoius instances...
> > >> index = 0
> > >> amix init 0
> > >> loop:
> > >>
> > >> asig oscili iamp, ifrequ, ifn
> > >>
> > >> amix = asig + amix
> > >>
> > >> index = index +1
> > >> ifrequ = ifrequ + 100
> > >> if index < 4 goto loop
> > >>
> > >> outs amix, amix
> > >>
> > >> It does NOT work right. I'm sure there is an error of procedure...first
> > >> thing, I don't know if it's possible to do this sort of loop...it's
> > >> implemented in adsynt opcode help, but non with signals...it creates an
> > >> array of numbers...
> > >> I well know that with adsynt I can do this sort of additive synthesis,
> > >> but
> > >> what I want to do can improve the creation of arrays of signal
> > >> generators,
> > >> filters for algoritmic crations of complex patterns...
> > >> Can csound help me in this way or my approach to the language is wrong?
> > >> Thank you very very much
> > >>
> > >>
> > >> --
> > >> View this message in context:
> > >> http://www.nabble.com/Accumulator-tf4356703.html#a12415417
> > >> Sent from the Csound - General mailing list archive at Nabble.com.
> > >>
> > >> --
> > >> Send bugs reports to this list.
> > >> To unsubscribe, send email to csound-unsubscribe@lists.bath.ac.uk
> > >>
> > > --
> > > Send bugs reports to this list.
> > > To unsubscribe, send email to csound-unsubscribe@lists.bath.ac.uk
> > >
> > >
> >
> > --
> > View this message in context: http://www.nabble.com/Accumulator-tf4356703.html#a12417459
> > Sent from the Csound - General mailing list archive at Nabble.com.
> >
> > --
> > Send bugs reports to this list.
> > To unsubscribe, send email to csound-unsubscribe@lists.bath.ac.uk
> >
>