[Csnd-dev] RFC: Ugen API

Steven Yi <[email protected]> Wed, 25 Feb 2026 15:24:14 -0500
Newsgroups gmane.comp.audio.csound.devel
Message-ID <CANtcCs4NBNy6+LzqJeYiHiJFSPgUBA1k08A36ktsxC1BuVYqgg@mail.gmail.com>
--0000000000005cf7d3064babca81
Content-Type: text/plain; charset="UTF-8"

Hi All,

I've set up an initial implementation of the UGEN API that is based on
prior work I had done (see paper ""Extending Aura with Csound Opcodes").
The API allows for instantiating opcodes as individual UGEN objects that
can be arbitrarily connected (i.e., patched together) for processing. This
should open up opcodes outside of the model of instruments/score (think PD,
webaudio nodes, etc.).

There's a draft PR available at:

https://github.com/csound/csound/pull/2498

that has some unit tests and an example of what it'd look like using it
from Python (via ctcsound). While things currently work with i, k, a types,
it does not for S or F types, which definitely needs to be addressed. I'm
unsure yet what would be the best way to proceed for API changes to
accommodate those types. Additionally, it's currently using a wrapper type
for arg types, rather than using CS_TYPE directly. (Something that may also
change.)

Happy to hear any feedback. Feel free to reply to the github issue or here.

Thanks!
Steven

--0000000000005cf7d3064babca81
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi All,<div><br>I&#39;ve set up an initial implementation =
of the UGEN API that is based on prior work I had done (see paper &quot;&qu=
ot;Extending Aura with Csound Opcodes&quot;). The API allows for instantiat=
ing opcodes as individual UGEN objects that can be arbitrarily connected (i=
.e., patched together) for processing. This should open up opcodes outside =
of the model of instruments/score (think PD, webaudio nodes, etc.).=C2=A0<b=
r><br>There&#39;s a draft PR available at:<br><br><a href=3D"https://github=
.com/csound/csound/pull/2498">https://github.com/csound/csound/pull/2498</a=
><br><br>that has some unit tests and an example of what it&#39;d look like=
 using it from Python (via ctcsound). While things currently work with i, k=
, a types, it does not for S or F types, which definitely needs to be addre=
ssed. I&#39;m unsure yet what would be the best way to proceed for API chan=
ges to accommodate=C2=A0those types. Additionally, it&#39;s currently using=
 a wrapper type for arg types, rather than using CS_TYPE directly. (Somethi=
ng that may also change.)<br><br>Happy to hear any feedback. Feel free to r=
eply to the github issue or here.=C2=A0<br><br>Thanks!<br>Steven=C2=A0<br><=
br><br></div></div>

--0000000000005cf7d3064babca81--