Em dom., 23 de jul. de 2023 às 19:41, Christof Ressi <[email protected]> escreveu:
> Side note: why do your channel indexes start at 1? > I do this in some objects although I may be doing things inconsistently in this case the idea is that "0" means "none" and I do this in other similar objects, like [xselect~], makes good intuitive sense to me. thanks for all the help > Pd uses zero-based indexes for almost anything, with only few exceptions > (ADC/DAC and MIDI channels, anything else?). > > Christof > On 23.07.2023 05:59, Alexandre Torres Porres wrote: > > > > On Sun, 23 Jul 2023 at 00:10 Alexandre Torres Porres <[email protected]> > wrote: > >> I see now I was just doing something silly thinking I was trying to copy >> some sophisticated trick that would sove things. >> >> I can't remember now which object I had to deal with something like this. >> > > > Found one, copied the structure, it works! I still have no good idea on > how things work, but hey, I got it working and I can sleep > > > > Thanks > > > > >> anyway, in this last version, I have my own "perform" method that fails >> equally as before in some cases, but it is not as weird as before... >> >> let me just copy it instead of linking to a github code that might >> change, here's the code section >> >> *static* t_int *remap_perform(t_int *w){ >> >> t_remap *x = (t_remap *)(w[1]); >> >> t_int n = (t_int)(w[2]); >> >> t_int nchans = (t_int)(w[3]); >> >> t_sample *in = (t_sample *)(w[4]); >> >> t_sample *out = (t_sample *)(w[5]); >> >> *for*(*int* i = 0; i < x->x_n; i++){ // channels to copy >> >> *int* ch = x->x_vec[i].a_w.w_float - 1; // get channel number >> >> *if*(ch >= nchans) >> >> ch = nchans - 1; >> >> *for*(*int* j = 0; j < n; j++){ // j is sample number of each >> channel >> >> *if*(ch >= 0) >> >> *out++ = in[ch*n + j]; >> >> *else* >> >> *out++ = 0; >> >> } >> >> } >> >> *return*(w+6); >> >> } >> >> Em sáb., 22 de jul. de 2023 às 21:22, Alexandre Torres Porres < >> [email protected]> escreveu: >> >>> ok, I was able to compile a version that does not blow pd up >>> >>> obviously I have no idea of what I am doing and I did some things based >>> on warnings I was getting, but then, I do copy the input first and then >>> reorder the channels but I do get the exact same result as before, so it >>> was all for nothing. >>> >>> here's my new attempt, hopefully not too far from getting things right >>> https://github.com/porres/pd-else/blob/master/Code_source/Compiled/signal/remap~.c#L34 >>> >>> cheers >>> >>> Em sáb., 22 de jul. de 2023 às 21:02, Alexandre Torres Porres < >>> [email protected]> escreveu: >>> >>>> >>>> >>>> Em sáb., 22 de jul. de 2023 às 18:39, Christof Ressi < >>>> [email protected]> escreveu: >>>> >>>>> if the input and output signals have the same channel count, they will >>>>> alias each other, just like in regular single-channel objects. >>>>> >>>> actually, funny stuff happens for 4 multichannel input and 3 >>>> multichannel output, but I've seen that issue with single channel objects >>>> and I tried copying stuff from other objects in ELSE into this multichannel >>>> idea and failed. >>>> >>>>> You first need to copy the whole input signal to a temporary buffer >>>>> (probably allocated in your object) and then copy the corresponding >>>>> channels to the output signal. >>>>> >>>> >>>> I wonder if you can give me a better detailed strategy/steps. >>>> >>>> thanks >>>> >>> _______________________________________________ > Pd-dev mailing list > [email protected] > https://lists.puredata.info/listinfo/pd-dev >
_______________________________________________ Pd-dev mailing list [email protected] https://lists.puredata.info/listinfo/pd-dev
