Csound Csound-dev Csound-tekno Search About

Re: [Csnd] pvsynth

Date2024-04-22 14:11
FromMenno Knevel
SubjectRe: [Csnd] pvsynth
thanks for this!

I found an example from your hand that does just this:



-d -odac


nchnls = 2
sr = 48000
ksmps = 128
0dbfs = 1

instr 1

  iamp = ampdbfs(p5)
  ipch = cps2pch(p4,12)
  ipan = 0.5
  
  xtratim 4
  tigoto skipInit
  
  kpch = port(ipch, 0.05, ipch)
  
  asig = vco2(iamp, kpch)
  
  ;asig = zdf_2pole(asig, min:k(10000, kpch * 16), 4)
  
  asig *= linsegr(0, 1, 1, 4, 0)
  
  al, ar pan2 asig, ipan
  
  out(al, ar)
  
  skipInit:
  
endin




i1 0 -.5 8.00 -12
i1 + -.5 9.00 -12
i1 + 2 6.00 -12

i1.1 .25 -.5 9.00 -12
i1.1 + -.5 10.00 -12
i1.1 + 2 7.00 -12

i1.2 1 -.25 7.00 .
i1.2 + 2 8.00 .



I And this one works very good. I also tried it with poscil2 without setting the skip parameter, and ksmps = 1; there were absolutely no clicks or pops.

But i do not fully understand the code. But i would like to so i can implement the code for pvsynth or partikkel etc.
For example the score block:
i1.1 .25 -.5 9.00 -12
i1.1 + -.5 10.00 -12
i1.1 + 2 7.00 -12

2 notes are held forever until they meet the 3rd note. 2 times the initialization is skipped.
I look at the score as one note that is molded in amplitude by linsegr. Also the filter moves over this note-block as one entity.
Any sudden pitch changes are prevented by the port opcode.
Is this a correct understanding?

And perhaps my main question: 
  tigoto skipInit
.....
  skipInit:

There is no code after this skipInit:  
Why does this code even work?

Csound mailing list
Csound@listserv.heanet.ie
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here

Date2024-04-22 15:09
Fromjoachim heintz
SubjectRe: [Csnd] pvsynth
https://csound.com/docs/manual/tigoto.html

csound "jumps" to the label, skipping initialization for the code in 
between.
but other than igoto only if this is a "tied" note.

On 22/04/2024 15:11, Menno Knevel wrote:
> thanks for this!
> 
> I found an example from your hand that does just this:
> 
> 
> 
> -d -odac
> 
> 
> nchnls = 2
> sr = 48000
> ksmps = 128
> 0dbfs = 1
> 
> instr 1
> 
>    iamp = ampdbfs(p5)
>    ipch = cps2pch(p4,12)
>    ipan = 0.5
>    
>    xtratim 4
>    tigoto skipInit
>    
>    kpch = port(ipch, 0.05, ipch)
>    
>    asig = vco2(iamp, kpch)
>    
>    ;asig = zdf_2pole(asig, min:k(10000, kpch * 16), 4)
>    
>    asig *= linsegr(0, 1, 1, 4, 0)
>    
>    al, ar pan2 asig, ipan
>    
>    out(al, ar)
>    
>    skipInit:
>    
> endin
> 
> 
> 
> 
> i1 0 -.5 8.00 -12
> i1 + -.5 9.00 -12
> i1 + 2 6.00 -12
> 
> i1.1 .25 -.5 9.00 -12
> i1.1 + -.5 10.00 -12
> i1.1 + 2 7.00 -12
> 
> i1.2 1 -.25 7.00 .
> i1.2 + 2 8.00 .
> 
> 
> 
> I And this one works very good. I also tried it with poscil2 without setting the skip parameter, and ksmps = 1; there were absolutely no clicks or pops.
> 
> But i do not fully understand the code. But i would like to so i can implement the code for pvsynth or partikkel etc.
> For example the score block:
> i1.1 .25 -.5 9.00 -12
> i1.1 + -.5 10.00 -12
> i1.1 + 2 7.00 -12
> 
> 2 notes are held forever until they meet the 3rd note. 2 times the initialization is skipped.
> I look at the score as one note that is molded in amplitude by linsegr. Also the filter moves over this note-block as one entity.
> Any sudden pitch changes are prevented by the port opcode.
> Is this a correct understanding?
> 
> And perhaps my main question:
>    tigoto skipInit
> .....
>    skipInit:
> 
> There is no code after this skipInit:
> Why does this code even work?
> 
> Csound mailing list
> Csound@listserv.heanet.ie
> https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
> Send bugs reports to
>          https://github.com/csound/csound/issues
> Discussions of bugs and features can be posted here

Csound mailing list
Csound@listserv.heanet.ie
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here