Thank you a lot guys ! You were really helpful.
Here is the solution I took … maybe not very beautiful but it works. Using this I can set a "not blended " sound for each oscil. I will take a closer look at GEN07 table too.
What is your opinion on this ?
` <Cabbage>
form caption("Untitled") size(400, 300), colour(58, 110, 182), pluginID("def1")
groupbox bounds(0, 0, 250, 160) colour(228, 238, 98, 255) text("Osc sound merging"){
checkbox bounds(5, 4, 12, 12) channel("Osc_Merge_On") colour:0(99, 96, 96, 255) colour:1(80, 94, 229, 255) fontcolour:0(36, 32, 32, 255) shape("circle")
checkbox bounds(50, 65, 20, 20) channel("SelectOsc1_1") colour:1(160, 89, 241, 255) radiogroup(750)
checkbox bounds(50, 86, 20, 20) channel("SelectOsc1_2") colour:1(160, 89, 241, 255) radiogroup(750)
checkbox bounds(50, 107, 20, 20) channel("SelectOsc1_3") colour:1(160, 89, 241, 255) radiogroup(750)
checkbox bounds(71, 65, 20, 20) channel("SelectOsc2_1") colour:1(160, 89, 241, 255) radiogroup(751)
checkbox bounds(71, 86, 20, 20) channel("SelectOsc2_2") colour:1(160, 89, 241, 255) radiogroup(751)
checkbox bounds(71, 107, 20, 20) channel("SelectOsc2_3") colour:1(160, 89, 241, 255) radiogroup(751)
checkbox bounds(92, 65, 20, 20) channel("SelectOsc3_1") colour:1(160, 89, 241, 255) radiogroup(752)
checkbox bounds(92, 86, 20, 20) channel("SelectOsc3_2") colour:1(160, 89, 241, 255) radiogroup(752)
checkbox bounds(92, 107, 20, 20) channel("SelectOsc3_3") colour:1(160, 89, 241, 255) radiogroup(752)
label bounds(5, 65, 40, 14) text("Osc A") fontcolour:0(0, 0, 0, 255) align("left")
label bounds(5, 88, 40, 14) text("Osc B") fontcolour:0(0, 0, 0, 255) align("left")
label bounds(5, 109, 40, 14) text("Osc C") fontcolour:0(0, 0, 0, 255) align("left")
label bounds(50, 60, 40, 14) text("Seq 1") fontcolour:0(0, 0, 0, 255) rotate(-1.3, 0, 0) align("left")
label bounds(71, 60, 40, 14) text("Seq 2") fontcolour:0(0, 0, 0, 255) rotate(-1.3, 0, 0) align("left")
label bounds(92, 60, 40, 14) text("Seq 3") fontcolour:0(0, 0, 0, 255) rotate(-1.3, 0, 0) align("left")
}
rslider bounds(120, 25, 40, 70) channel("Duration_segA") range(0, 3, 1, 1, 0.01) valuetextbox(0)
rslider bounds(160, 25, 40, 70) channel("Duration_segB") range(0, 3, 1, 1, 0.01) valuetextbox(0)
rslider bounds(200, 25, 40, 70) channel("Duration_segC") range(0, 3, 1, 1, 0.01) valuetextbox(0)
checkbox bounds(140, 80, 80, 20) channel("SelectOsc_Loop") text("Loop") colour:1(160, 89, 241, 255) fontcolour:0(0, 0, 0, 255) fontcolour:1(0, 0, 0, 255) radiogroup(753) shape("circle")
checkbox bounds(140, 105, 80, 20) channel("SelectOsc_LFO") text("LFO") colour:1(160, 89, 241, 255) fontcolour:0(0, 0, 0, 255) fontcolour:1(0, 0, 0, 255) radiogroup(753) shape("circle")
;checkbox bounds(120, 122, 20, 20) channel("SelectOsc3_2") text("A->B") colour:1(160, 89, 241, 255) radiogroup(753) shape("circle")
;checkbox bounds(120, 144, 20, 20) channel("SelectOsc3_3") colour:1(160, 89, 241, 255) radiogroup(753) shape("circle")
</Cabbage>
<CsoundSynthesizer>
<CsOptions>
-n -d -+rtmidi=NULL -M0 -m0d --midi-key-cps=4 --midi-velocity-amp=5
</CsOptions>
<CsInstruments>
; Initialize the global variables.
sr = 44100
ksmps = 32
nchnls = 2
0dbfs = 1
massign 0,2
instr 1
if changed:k(chnget:k("SelectOsc1_1"),chnget:k("SelectOsc1_2"),chnget:k("SelectOsc1_3")) ==1 then
if chnget:k("SelectOsc1_1") ==1 then
gkVoice1 =1
endif
if chnget:k("SelectOsc1_2") ==1 then
gkVoice1 =2
endif
if chnget:k("SelectOsc1_3") ==1 then
gkVoice1 =3
endif
endif
if changed:k(chnget:k("SelectOsc2_1"),chnget:k("SelectOsc2_2"),chnget:k("SelectOsc2_3")) ==1 then
if chnget:k("SelectOsc2_1") ==1 then
gkVoice2 =1
endif
if chnget:k("SelectOsc2_2") ==1 then
gkVoice2 =2
endif
if chnget:k("SelectOsc2_3") ==1 then
gkVoice2 =3
endif
endif
if changed:k(chnget:k("SelectOsc2_1"),chnget:k("SelectOsc2_2"),chnget:k("SelectOsc2_3")) ==1 then
if chnget:k("SelectOsc3_1") ==1 then
gkVoice3 =1
endif
if chnget:k("SelectOsc3_2") ==1 then
gkVoice3 =2
endif
if chnget:k("SelectOsc3_3") ==1 then
gkVoice3 =3
endif
endif
if changed:k(chnget:k("Duration_segA"))==1 then
gkDuration_segA chnget "Duration_segA"
endif
if changed:k(chnget:k("Duration_segB"))==1 then
gkDuration_segB chnget "Duration_segB"
endif
if changed:k(chnget:k("Duration_segC"))==1 then
gkDuration_segC chnget "Duration_segC"
endif
if changed:k(chnget:k("SelectOsc_Loop"))==1 then
gkSelectOsc_Loop chnget "SelectOsc_Loop"
endif
if changed:k(chnget:k("SelectOsc_LFO"))==1 then
gkSelectOsc_LFO chnget "SelectOsc_LFO"
endif
endin
;instrument will be triggered by keyboard widget
instr 2
kEnv madsr .1, .2, .6, .4
a3 vco2 p5, p4
a2 vco2 p5, p4*cent(400) , 2, 0.5
a1 oscil p5, p4*cent(700)
iPt1 = 0 ; from 0
iDur1 = .3 ;stay during this
iPt2 = 1 ; to 0 and from 0
iDur2 = i(gkDuration_segA) ; during this
iPt3 = 2 ;ramp to 1
iDur3 = 1 ; stay during this
iPt4 = 3 ;from THIS point after
iDur4 = i(gkDuration_segB) ;sec
iPt5 = 4 ;REACH THIS POINT
iDur5 = 1 ; stay there
iPt6 = 5
kCurve linsegr iPt1 ,iDur1, iPt2 , iDur2 ,iPt3, iDur3 , iPt4 , iDur4 , iPt5 , iDur5 , iPt6
if kCurve <1 then ;plateau
aOut = a1
elseif (kCurve >=1) && (kCurve <2) then ;rampe
aOut = (2-kCurve)* a1+ a2*(kCurve-1)
elseif (kCurve >=2) && (kCurve <3)then ; plateau
aOut = a2
elseif (kCurve >=3) && (kCurve <4)then ;rampe
aOut = (4-kCurve)* a2+ a3*(kCurve-3)
elseif (kCurve >=4) then ; plateau
aOut = a3
endif
outs aOut*kEnv, aOut*kEnv
endin
</CsInstruments>
<CsScore>
;causes Csound to run for about 7000 years...
f0 z
i 1 0 3600
</CsScore>
</CsoundSynthesizer>
`