| I found that expon produced a click when the end note out of the group of tied notes was reached.
With transeg, this issue was gone.
Would you consider sharing the csd of your tied note-instrument so i can steal...i mean borrow... some code and learn from it?
For now i am exploring how to use tied notes of the monosynth, based on the article from Steven Yi you mention.
Now that samples and filters are "under control" and can be used, this is getting better and better:
;
; ""
; by Menno Knevel
;
;
;
; Generated by blue 2.8.2 (http://blue.kunstmusik.com)
;
sr=44100
ksmps=1
nchnls=2
0dbfs = 1
gk_blue_auto0 init 0.0745625819
gk_blue_auto1 init 0.2625765878
gk_blue_auto2 init 2
opcode tieStatus,i,0
itie tival
if (itie == 0 && p3 < 0) ithen ; this is an initial note within a group of tied notes
itiestatus = 0
elseif (p3 < 0 && itie == 1) ithen ; this is a middle note within a group of tied notes
itiestatus = 1
elseif (p3 > 0 && itie == 1) ithen ; this is an end note out of a group of tied notes
itiestatus = 2
elseif (p3 > 0 && itie == 0) ithen ; this note is a standalone note
itiestatus = -1
endif
xout itiestatus
endop
instr 1 ;untitled
event "e", 0, 0, 0.1
endin
instr 2 ;Type 1 Instrument (Monosynth)
idur = abs(p3) ; idur is always positive
ipch = p4
iamp = p5
itiestatus tieStatus
iskip tival
tigoto skipInit
ioldpch init ipch ; copy pitch
ioldamp init iamp ; copy amplitude
skipInit:
inewpch = ipch
kpchline linseg ioldpch, i(gk_blue_auto1), inewpch, idur - i(gk_blue_auto1), inewpch ; takes care of pitch jumps
ioldpch = inewpch
kamp port iamp, i(gk_blue_auto0), ioldamp ; takes care of amplitude jumps
ioldamp = -1
if (itiestatus == -1) then ; envelope for normal notes
kenv adsr .001, .05, .9, .05
elseif (itiestatus == 0) then ; envelope for first tied note
kenv linseg 0, .05, 1, .2, 1
elseif (itiestatus == 1) then ; envelope for tied middle notes
kenv init 1
elseif (itiestatus == 2) then ; release for last tied note
kenv linseg 1, idur - .05, 1, .05, 0
endif
aout flooper2 1, kpchline, .18, .25, 0.05, 1, 0, 0, 0, iskip
kfrq transeg p6, idur, i(gk_blue_auto2), p7
aout buthp aout, kfrq, iskip
aout = aout * kamp * kenv
outs aout, aout
prints "\nstatus of TIE = %d\n", itiestatus ; report tieStatus
prints "status of SKIP = %d\n", iskip ; 1 if this note has been “tied” onto a previously held note, 0 if no tie
printk .1, kfrq
endin
f 1 0 0 1 "fox.wav" 0 0 0
i2.1 0.0 0.8727272727 1.0 .80 14000 500
i2.1 1.0909090909090908 0.8727272727 0.7 .83 14000 500
i2.1 2.1818181818181817 0.8727272727 2.7 .76 14000 500
i2.1 3.2727272727272725 0.8727272727 1.5 .70 14000 500
i2 5.454545454545453 -1.6363636364 1.0 .80 14000 500
i2 7.636363636363637 -1.6363636364 0.7 .83 500 500
i2 9.818181818181817 -1.6363636364 2.7 .76 500 500
i2 12.0 1.6363636364 1.5 .70 500 50
i2 13.909090909090907 1.0909090909 1.5 1 5 5500
i1 18.0 0.1
e
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 |