Re: [Csnd-dev] UDO problem in latest develop
Hlöðver Sigurðsson <[email protected]> Mon, 10 Nov 2025 18:52:28 +0200
| Newsgroups | gmane.comp.audio.csound.devel |
|---|---|
| Message-ID | <CAB8vR8JygimsFEdOQZNvnEgJo8KG_vv5BTbjJhUtHqF9oxhjnQ@mail.gmail.com> |
I made a reproducible test here, it fails in instr 2, instr 1 works, so you have a workaround for now, by placing the arguments positionally "old-style" while I make a fix <CsoundSynthesizer> <CsOptions> -n -d </CsOptions> <CsInstruments> sr = 44100 ksmps = 64 nchnls = 2 0dbfs = 1 giSine ftgen 0, 0, 4096, 10, 1 opcode TestXout, aa, ikai ifreq, koff, aamp, itbl xin koff1 = koff koff2 = 2 * koff a1 poscil aamp, ifreq+koff1, itbl a2 poscil aamp, ifreq+koff2, itbl a3 poscil aamp, ifreq-koff1, itbl a4 poscil aamp, ifreq-koff2, itbl aL = a1 + a3 aR = a2 + a4 xout aL, aR endop instr 1 ifreq = 440 koff = 0.004 aenv linen 0.5, 0.01, p3, 0.01 ; This should work - unpacking the outputs aL, aR TestXout ifreq, koff, aenv, giSine out aL, aR endin instr 2 ifreq = 440 koff = 0.004 aenv linen 0.5, 0.01, p3, 0.01 ; This tests the regression - calling UDO with multiple outputs directly in out statement out TestXout(ifreq, koff, aenv, giSine) endin </CsInstruments> <CsScore> i 1 0 0.1 i 2 0 0.1 </CsScore> </CsoundSynthesizer> On Mon, 10 Nov 2025 at 18:51, Dave Seidel <[email protected]> wrote: > This is how it's being used in context: > > instr Drone > idur = p3 > iamp = ampdb(p4) / 7 > ifreq = p5 > > icps = ifreq / 4 > icps2 = icps * 1.5 > icps3 = icps * 2 > prints("drones: %f, %f, %f\n", icps, icps2, icps3) > > aenv = linen(iamp, 3, idur, 3) > > a1L, a1R = RissetHarmOsc(icps, 0.004, aenv, giPrime) > a2L, a2R = RissetHarmOsc(icps2, 0.005, aenv, giPrime) > a3L, a3R = RissetHarmOsc(icps3, 0.006, aenv, giPrime) > ga_drone_L += a1L+a2L+a3L > ga_drone_R += a1R+a2R+a3R > > printks("drone %f, %f\n", 2, ga_drone_L, ga_drone_R) > endin > > > On Mon, Nov 10, 2025 at 11:48 AM Dave Seidel <[email protected]> > wrote: > >> I'm not getting any error message at all. >> >> On Mon, Nov 10, 2025 at 11:45 AM Hlöðver Sigurðsson <[email protected]> >> wrote: >> >>> this is the error you are seeing? >>> >>> > error: opcode 'RissetHarmOsc' for expression with arg types icai >>> returns out-args != 1, line 43 >>> >>> On Mon, 10 Nov 2025 at 18:41, Hlöðver Sigurðsson <[email protected]> >>> wrote: >>> >>>> I'm taking a look at this now, I don't know if my changes had anything >>>> to do with it, not unlikely >>>> >>>> On Mon, 10 Nov 2025 at 18:39, Dave Seidel <[email protected]> >>>> wrote: >>>> >>>>> The following UDO does not work with the latest develop sources. The >>>>> print statement shows that all four inputs argos are coming in at 0; If I >>>>> revert to the 7.0.0-beta.9 tag, it works fine. >>>>> >>>>> opcode RissetHarmOsc(freq:i,ofs:k,amp:a,tbl:i):(a,a) >>>>> koff1 = ofs >>>>> koff2 = 2 * ofs >>>>> koff3 = 3 * ofs >>>>> koff4 = 4 * ofs >>>>> >>>>> printks(">> RissetHarmOsc ->%f %f %f %f\n", 5, freq, ofs, amp, tbl) >>>>> >>>>> ; a1 = poscil3(kamp, freq, tbl >>>>> a2 = poscil3(amp, freq+koff1, tbl) >>>>> a3 = poscil3(amp, freq+koff2, tbl) >>>>> a4 = poscil3(amp, freq+koff3, tbl) >>>>> a5 = poscil3(amp, freq+koff4, tbl) >>>>> a6 = poscil3(amp, freq-koff1, tbl) >>>>> a7 = poscil3(amp, freq-koff2, tbl) >>>>> a8 = poscil3(amp, freq-koff3, tbl) >>>>> a9 = poscil3(amp, freq-koff4, tbl) >>>>> aL = a2+a4+a6+a8 >>>>> aR = a3+a5+a7+a9 >>>>> >>>>> aoutL, aoutR = reverbsc(aL, aR, 0.4, 4000) >>>>> xout(aoutL+aL, aoutR+aR) >>>>> ; xout(aL, aR) >>>>> endop >>>>> >>>>> example calling statement: >>>>> >>>>> a1L, a1R = RissetHarmOsc(icps, 0.004, aenv, giPrime) >>>>> >>>>> Has something changed to make my UDO invalid in some way? I'm using >>>>> this code in as performance on Saturday and I'm focused on preparing, but I >>>>> can follow up with a minimal example. >>>>> >>>>> >>>>> >>>>>