Hey Iain,
Yes I saw your posts on CSound re Rise, your YouTube video is fantastic!
(For other forum members Iain’s video below):
It’s so fantastic that there is more traction for Seaboard integration with Csound! MPE (regardless of manufacturer) is really exciting for controlling synthesis, and especially Csound.
I have had a bit of trouble with the Blocks Seaboard, mainly Slide (in Y direction) gets reset to note-on value during note-off. So if you start in middle of keywave (0.5) then move up and release it does not stay at value 1 - rather it goes back to original value (0.5).
I’m too new to the Seaboard world (only had it for a week) so I don’t know if this is something that can be changed in software. I played with the settings for Slide: Multi; Highest; Lowest; etc. nothing worked but last. (and that was checking Midi Monitor output).
I just made a test patch that fixed the problem for me. I also felt that note-on velocity isn’t the best for playing / performing, possibly for some sounds, but not for sustained sounds. I think that it would be good to work out a mixture of both Note-On & Aftertouch to generate more accurate note triggers. I have a feeling this is what Equator is doing, as its really easy to play.
As a test I put this together (just a saw wave and sine wave mix controlled by Slide) Forgive any un-Csound-ish code:
form caption("Untitled") size(400, 300), colour(58, 110, 182), pluginID("def1")
keyboard bounds(8, 158, 381, 95)
</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
;instrument will be triggered by keyboard widget
instr 1
kaftpre aftouch 0, 1
kportaft linseg 0, 0.0001, 0.1, 1, 0.1
kaft portk kaftpre, kportaft
kbnd pchbend 0, 48
kport linseg 0, 0.0001, 0.01, 1, 0.01
kbnd portk kbnd, kport
kpchbend = semitone(kbnd)
kcont init 1
midicontrolchange 74, kcont, 0, 1
kport2 linseg 0, 0.0001, 0.01, 1, 0.01
kcont portk kcont, kport2
koffval release
koff trigger koffval, .5, 0
kcontold samphold kcont, koff
if (koffval == 1.0) then
kcontout = kcontold
else
kcontout = kcont
endif
kEnv madsr .5, .0, 1, .1
aOutSaw vco2 kaft, p4 * kpchbend, 0
aOutSine oscil kaft, p4 * kpchbend
out (aOutSaw*kcontout+aOutSine*(1-kcontout))*kEnv
endin
</CsInstruments>
<CsScore>
;causes Csound to run for about 7000 years...
f0 z
</CsScore>
</CsoundSynthesizer>