[PD] question about csound and pd

martin.peach at sympatico.ca martin.peach at sympatico.ca
Mon Jan 10 22:12:52 CET 2011


Maybe with the pd patch it would make more sense.
It looks like Osc2Dev is used to set gk4, which is used to calculate kgrainfreq2, which is not used, so it's not surprising it doesn't do anything...

Martin

> Subject: [PD] question about csound and pd
>
> Hello , i been using csound inside pd lately , I use csoundapi only
> for synthesis inside pd and then i control everything with pd.
> For doing this i edit the csound code and add this line: gk1 invalue
> "variable_name", then i replace gk1 in the csound code wherever i want
> to use that values, then i can send values to that variable from pd.
> This works fine in most all cases, but not always.
>
> My question is why in this specific case it does not work?
> I using the example code of the Partikkel opcode, and i would like to
> control this parameters from pd: Osc2Dev and MaxSync
>
> Do anybody have an idea why this is not working?
>
>
> ; Select audio/midi flags here according to platform
> ; Audio out
> -odac ;;;RT audio
> ; For Non-realtime ouput leave only the line below:
> ; -o partikkel_softsync.wav -W ;;; for file output any platform
>
> sr = 44100
> ksmps = 20
> nchnls = 2
>
> ; Example by Oeyvind Brandtsegg 2007, revised 2008
>
> giSine ftgen 0, 0, 65537, 10, 1
> giCosine ftgen 0, 0, 8193, 9, 1, 1, 90
> giSigmoRise ftgen 0, 0, 8193, 19, 0.5, 1, 270, 1 ; rising sigmoid
> giSigmoFall ftgen 0, 0, 8193, 19, 0.5, 1, 90, 1 ; falling sigmoid
>
> ; *************************************************
> ; example of soft synchronization of two partikkel instances
> ; *************************************************
> instr 1
>
> gk1 invalue "igrainrate"
> gk2 invalue "igrainsize"
>
> gk3 invalue "igrainFreq"
>
> gk4 invalue "iosc2Dev"
> gk5 invalue "iMaxSync"
> gk6 invalue "mask"
> gk7 invalue "fm"
>
> /*score parameters*/
> igrainrate = p4 ; grain rate
> igrainsize = p5 ; grain size in ms
> igrainFreq = p6 ; fundamental frequency of source waveform
> iosc2Dev = p7 ; partikkel instance 2 grain rate deviation factor
> iMaxSync = p8 ; max soft sync amount (increasing to this value during
> length of note)
> awavfm = p9
>
> /*overall envelope*/
> iattack = 0.001
> idecay = 0.2
> isustain = 0.7
> irelease = 0.2
> amp linsegr 0, iattack, 1, idecay, isustain, 1, isustain, irelease, 0
>
> kgrainfreq = gk1 ; grains per second
> kdistribution = 0 ; periodic grain distribution
> idisttab = -1 ; (default) flat distribution used
> ; for grain distribution
> async = 0 ; no sync input
> kenv2amt = 1 ; no secondary enveloping
> ienv2tab = -1 ; default secondary envelope (flat)
> ienv_attack = giSigmoRise ; default attack envelope (flat)
> ienv_decay = giSigmoFall ; default decay envelope (flat)
> ksustain_amount = 0.3 ; time (in fraction of grain dur) at
> ; sustain level for each grain
> ka_d_ratio = 0.2 ; balance between attack and decay time
> kduration = igrainsize ; set grain duration in ms
> kamp = 0.2*0dbfs ; amp
> igainmasks = -1 ; (default) no gain masking
> kwavfreq = gk3 ; fundamental frequency of source waveform
> ksweepshape = 1 ; shape of frequency sweep (0=no sweep)
> iwavfreqstarttab = -1 ; default frequency sweep start
> ; (value in table = 1, which give
> ; no frequency modification)
> iwavfreqendtab = -1 ; default frequency sweep end
> ; (value in table = 1, which give
> ; no frequency modification)
> awavfm = 7 ; no FM input
> ifmamptab = -1 ; default FM scaling (=1)
> kfmenv = -1 ; default FM envelope (flat)
> icosine = giCosine ; cosine ftable
> kTrainCps = kgrainfreq ; set trainlet cps equal to grain
> ; rate for single-cycle trainlet in
> ; each grain
> knumpartials = 3 ; number of partials in trainlet
> kchroma = 1 ; balance of partials in trainlet
> ichannelmasks = -1 ; (default) no channel masking,
> ; all grains to output 1
> krandommask = 0 ; no random grain masking
> kwaveform1 = giSine ; source waveforms
> kwaveform2 = giSine ;
> kwaveform3 = giSine ;
> kwaveform4 = giSine ;
> iwaveamptab = -1 ; mix of 4 source waveforms and
> ; trainlets (set to default)
> asamplepos1 = 0 ; phase offset for reading source waveform
> asamplepos2 = 0 ;
> asamplepos3 = 0 ;
> asamplepos4 = 0 ;
> kwavekey1 = 1 ; original key for source waveform
> kwavekey2 = 1 ;
> kwavekey3 = 1 ;
> kwavekey4 = 1 ;
> imax_grains = 200 ; max grains per k period
> iopcode_id = 1 ; id of opcode, linking partikkel
> ; to partikkelsync
>
> a1 partikkel kgrainfreq, kdistribution, idisttab, async, kenv2amt, \
> ienv2tab,ienv_attack, ienv_decay, ksustain_amount, ka_d_ratio, \
> gk2, kamp, igainmasks, kwavfreq, ksweepshape, \
> iwavfreqstarttab, iwavfreqendtab, awavfm, ifmamptab, kfmenv, \
> icosine, kTrainCps, knumpartials, kchroma, ichannelmasks, \
> gk6, kwaveform1, kwaveform2, kwaveform3, kwaveform4, \
> iwaveamptab, asamplepos1, asamplepos2, asamplepos3, asamplepos4, \
> kwavekey1, kwavekey2, kwavekey3, kwavekey4, imax_grains, iopcode_id
>
> async1 partikkelsync iopcode_id ; clock pulse output of the
> ; partikkel instance above
> ksyncGravity line 0, p3, gk5 ; strength of synchronization
> aphase2 init 0
> asyncPolarity limit (int(aphase2*2)*2)-1, -1, 1
> ; use the phase of partikkelsync instance 2 to find sync
> ; polarity for partikkel instance 2.
> ; If the phase of instance 2 is less than 0.5, we want to
> ; nudge it down when synchronizing,
> ; and if the phase is > 0.5 we want to nudge it upwards.
> async1 = async1*ksyncGravity*asyncPolarity ; prepare sync signal
> ; with polarity and strength
>
> kgrainfreq2 = igrainrate * gk4 ; grains per second for second partikkel instance
> iopcode_id2 = 2
> a2 partikkel kgrainfreq, kdistribution, idisttab, async1, kenv2amt, \
> ienv2tab, ienv_attack, ienv_decay, ksustain_amount, ka_d_ratio, \
> gk2, kamp, igainmasks, kwavfreq, ksweepshape, \
> iwavfreqstarttab, iwavfreqendtab, awavfm, ifmamptab, kfmenv, \
> icosine, kTrainCps, knumpartials, kchroma, ichannelmasks, \
> gk6, kwaveform1, kwaveform2, kwaveform3, kwaveform4, \
> iwaveamptab, asamplepos1, asamplepos2, asamplepos3, \
> asamplepos4, kwavekey1, kwavekey2, kwavekey3, kwavekey4, \
> imax_grains, iopcode_id2
>
> async2, aphase2 partikkelsync iopcode_id2
> ; clock pulse and phase
> ; output of the partikkel instance above,
> ; we will only use the phase
>
> outs a1*amp, a2*amp
>
> endin
>
> /*score parameters
> igrainrate = p4 ; grain rate
> igrainsize = p5 ; grain size in ms
> igrainFreq = p6 ; frequency of source wave within grain
> iosc2Dev = p7 ; partikkel instance 2 grain rate deviation factor
> iMaxSync = p8 ; max soft sync amount (increasing to this value during
> length of note)
> */
> ; GrRate GrSize GrFund Osc2Dev MaxSync
>
> i1 3 4417 12 2 580 1.9 8.8
>
> _______________________________________________
> Pd-list at iem.at mailing list
> UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
 		 	   		  


More information about the Pd-list mailing list