Re: [Csnd-dev] UDO problem in latest develop
Dave Seidel <[email protected]> Mon, 10 Nov 2025 12:08:32 -0500
| Newsgroups | gmane.comp.audio.csound.devel |
|---|---|
| Message-ID | <CAMnrweDPtu4VG1MCKyz8Da5brmmBKK2zSf3FRo8XEpafu7ELEg@mail.gmail.com> |
But I am grateful to have a workaround! On Mon, Nov 10, 2025 at 12:06 PM Dave Seidel <[email protected]> wrote: > My piece actually contains 5 UDOs, all of which were written using the new > style, and none of them work. Hopefully there will be a testable fix soon > so I don't have to rewrite a substantial part of the code. :-) > > On Mon, Nov 10, 2025 at 11:59 AM Dave Seidel <[email protected]> > wrote: > >> To confirm, the UDO works if defined and invoked using the old syntax. >> >> On Mon, Nov 10, 2025 at 11:55 AM Dave Seidel <[email protected]> >> wrote: >> >>> Thanks, Hlöðver. >>> >>> On Mon, Nov 10, 2025 at 11:52 AM Hlöðver Sigurðsson <[email protected]> >>> wrote: >>> >>>> 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. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>