[Csnd] chns with more instances of same instr
Date | 2020-02-07 13:54 |
From | jacqouemin |
Subject | [Csnd] chns with more instances of same instr |
Hello everyone, I tried to write a simple UDO in order to control directly every instrument outlet for live coding. I'd like just write "stout("MyInstr")" and then (in the future) have something like "stfx("MyInstr", "MyFx")" to connect the two instruments. There it is my UDO: --- opcode stout, 0, S Sinstr xin a1 chnget sprintf("%s-1", Sinstr) a2 chnget sprintf("%s-2", Sinstr) outs a1, a2 endop --- Everything works fine, but the only big problem is that if I I have more instances of the same instrument, I can only hear the last one in the score.. I can't really figure out the issue (I also tried to check instances with "active" opcode and create for each one a channel, but it didn't work and I don't think it is the best approach). Thank you, p.s. new update with remembered MACROs is life changing!! Thank you so much. jacques -- Sent from: http://csound.1045644.n5.nabble.com/Csound-General-f1093014.html Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here |
Date | 2020-02-07 14:09 |
From | "Jeanette C." |
Subject | Re: [Csnd] chns with more instances of same instr |
Hey hey Jacques, Feb 7 2020, jacqouemin has written: ... > Everything works fine, but the only big problem is that if I I have more > instances of the same instrument, I can only hear the last one in the > score.. ... What are you using to feed audio into the channel(s)? I have been at fault with these opcodes before. :) You should use chnmix and clear the channel once you've read the output from it. HTH. Best wishes, JKeanette -- * Website: http://juliencoder.de - for summer is a state of sound * Youtube: https://www.youtube.com/channel/UCMS4rfGrTwz8W7jhC1Jnv7g * SoundCloud: https://soundcloud.com/jeanette_c * Twitter: https://twitter.com/jeanette_c_s * Audiobombs: https://www.audiobombs.com/users/jeanette_c * GitHub: https://github.com/jeanette-c You might think that I won't make it on my own, But now I'm Stronger <3 (Britney Spears) Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here |
Date | 2020-02-07 17:04 |
From | jacqouemin |
Subject | Re: [Csnd] chns with more instances of same instr |
Hello Jeanette! Thank you for your answer! I am feeding with two "pluck" outlets. I am looking better in the doc, but at the same time I did not understand well the problem. This is my "schema": Pluck instr (chnset) -> opcode stereo with chnget and direct outs If I write a score like this: p4(freq) i "Pluck" 0 5 100 i "Pluck" 1 5 200 i "Pluck" 2 5 300 I will always only hear the last one and the others will disappear. -- Sent from: http://csound.1045644.n5.nabble.com/Csound-General-f1093014.html Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here |
Date | 2020-02-07 17:13 |
From | "Jeanette C." |
Subject | Re: [Csnd] chns with more instances of same instr |
Feb 7 2020, jacqouemin has written: ... > This is my "schema": > Pluck instr (chnset) -> opcode stereo with chnget and direct outs ... Have you tried chnmix instead of chnset? I think you first need to create the channel, one time only. Perhaps with an init instrument. Then in your opcode after calling chnget call chnclear on a channel. chnmix should solve the problem of only hearing the last instance of your instrument and chnclear will avoid distortion or similar. Best wishes, Jeanette -- * Website: http://juliencoder.de - for summer is a state of sound * Youtube: https://www.youtube.com/channel/UCMS4rfGrTwz8W7jhC1Jnv7g * SoundCloud: https://soundcloud.com/jeanette_c * Twitter: https://twitter.com/jeanette_c_s * Audiobombs: https://www.audiobombs.com/users/jeanette_c * GitHub: https://github.com/jeanette-c Here I go, on my own now <3 (Britney Spears) Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here |
Date | 2020-02-07 17:19 |
From | fra |
Subject | Re: [Csnd] chns with more instances of same instr |
Hello, i'm not really sure but when i use same instances of a instrument that overlap i use fractional instrument number (i.e. calling instr 5 as 5.1, 5.2, etc). Please note that i'm not so sure so i could be really wrong! Ciao, francesco. Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here |
Date | 2020-02-07 17:36 |
From | Oeyvind Brandtsegg |
Subject | Re: [Csnd] chns with more instances of same instr |
Hi, Just my 2 cents: Jeanette is correct that you should use chnmix instead of chnset. If you write to a channel named "amp" for example, and this happens in two instrument instances that run simultaneously, then the first instrument will write its signal into the chn, then the second instance of the instrument will write its signal to the same memory space. Effectively overwriting what the first instrument instance put in there. Chnset always overwrites, while chnmix just adds to what is already there. This also creates the need to zero the channel at some point (usually in the last instrument in the orchestra), otherwise we would continue adding to the same signal again on the next k-cycle, and this will quickly explode. fre. 7. feb. 2020 kl. 18:19 skrev fra <francescoarmandoporta@gmail.com>: Hello, |
Date | 2020-02-08 14:05 |
From | jacqouemin |
Subject | Re: [Csnd] chns with more instances of same instr |
Thank you for all your answers! I changed "chnset" with "chnmix" and it works! Now it's clearer how the "chn" system works, but I've stil some issues with the "chnclear" system. If I make a "chnclear" instrument at the end of everything, some channels still explode (I think because of the inside routing of my chain). On the contrary if I try to clear channels inside some instruments, the chain I want to build breaks. Is there a simple law in order to clear the channels? Thank you again, Best, j -- Sent from: http://csound.1045644.n5.nabble.com/Csound-General-f1093014.html Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here |
Date | 2020-02-08 14:31 |
From | joachim heintz |
Subject | Re: [Csnd] chns with more instances of same instr |
what you must do, in general: to have a chnlear instrument at the very end of your signal chain, and for each software channel you use. if i got it right, you don't know in advance how many channels you will have, and how they are called. perhaps it would work when you call an instrument in your UDO which clears the channel you create in this moment: opcode stout, 0, S Sinstr xin a1 chnget sprintf("%s-1", Sinstr) a2 chnget sprintf("%s-2", Sinstr) schedule "clear",0,99999,Sinstr outs a1, a2 endop the instrument "clear" is then the last one in your csound instruments, and contains: instr clear Sinstr strget p4 chnclear sprintf("%s-1", Sinstr) chnclear sprintf("%s-2", Sinstr) endin this might work, although it does not really feel good for me because: 1) you create superfluous instances (only one is needed for one channel name). this could be solved by an if condition. 2) if you delete the channel, the "clear" instrument should be turned off, too. perhaps you don't delete channels at all, so this might not be an issue. best - joachim On 08/02/2020 15:05, jacqouemin wrote: > Thank you for all your answers! > > I changed "chnset" with "chnmix" and it works! > > Now it's clearer how the "chn" system works, but I've stil some issues with > the "chnclear" system. > If I make a "chnclear" instrument at the end of everything, some channels > still explode (I think because of the inside routing of my chain). On the > contrary if I try to clear channels inside some instruments, the chain I > want to build breaks. > > Is there a simple law in order to clear the channels? > > Thank you again, > Best, > > j > > > > -- > Sent from: http://csound.1045644.n5.nabble.com/Csound-General-f1093014.html > > Csound mailing list > Csound@listserv.heanet.ie > https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND > Send bugs reports to > https://github.com/csound/csound/issues > Discussions of bugs and features can be posted here > Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here |
Date | 2020-02-08 15:44 |
From | jacqouemin |
Subject | Re: [Csnd] chns with more instances of same instr |
Thank you joachim. I tried what you said, but with sad results. It works with this: opcode getmeout, 0, S Sinstr xin S1 sprintf "%s-1", Sinstr S2 sprintf "%s-2", Sinstr outs a1, a2 chnclear sprintf("%s-1", Sinstr) <----------------!!! chnclear sprintf("%s-2", Sinstr) <----------------!!! endop I made an instrument "clear", but it doesn't work. I think the problem is the structure of my instruments: as I said, I am using this method for live coding and so maybe there is my problem in the instrument chains. Anyway if I want to build something more complex like this: opcode nofx, 0, SSP Sin, Sout, kgain xin a1 chnget sprintf("%s-1", Sin) a2 chnget sprintf("%s-2", Sin) a1 *= a(kgain) a2 *= a(kgain) chnmix a1, sprintf("%s-1", Sout) chnmix a2, sprintf("%s-2", Sout) endop Everything explodes or there is no sound..! Because I use the two opcode together and I think there is an accumulation somewhere! Do you think there is a better way to obtain what I want? I'd love to route all my instruments with some lines like: opcode("Myinstr", "Myfx") opcode("Myfx", "out") I also checked out the "connect" opcode, but it doesn't work inside opcodes. j -- Sent from: http://csound.1045644.n5.nabble.com/Csound-General-f1093014.html Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here |
Date | 2020-02-08 17:32 |
From | jacqouemin |
Subject | Re: [Csnd] chns with more instances of same instr |
Yes! It worked now, I had too many instrument and the "clear" instrument was not at the end. I'm sorry! Now the problem is that I have to increment the number of instances of my clear instrument passing a string in p-field. With schedule opcode the instrument doesn't increment his instances number, am I wrong? Every time is initialised with the new variables. With event I cannot pass any string and scoreline doesn't receive variables inside parenthesis.. I'm stuck! -- Sent from: http://csound.1045644.n5.nabble.com/Csound-General-f1093014.html Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here |
Date | 2020-02-08 18:15 |
From | joachim heintz |
Subject | Re: [Csnd] chns with more instances of same instr |
what i suggested was 1) to pass the string Sinstr (which is received in the call of the stout) to the call of the clear instrument: schedule "clear",0,99999,Sinstr 2) then receive this string and create the appropriate channel name and chnclear lines: instr clear Sinstr strget p4 chnclear sprintf("%s-1", Sinstr) chnclear sprintf("%s-2", Sinstr) endin when you really did it, i don't understand why you said: > Now the problem is that I have to increment the number of instances of my > clear instrument passing a string in p-field. On 08/02/2020 18:32, jacqouemin wrote: > Yes! It worked now, I had too many instrument and the "clear" instrument was > not at the end. I'm sorry! > > Now the problem is that I have to increment the number of instances of my > clear instrument passing a string in p-field. > > With schedule opcode the instrument doesn't increment his instances number, > am I wrong? Every time is initialised with the new variables. > With event I cannot pass any string and scoreline doesn't receive variables > inside parenthesis.. > I'm stuck! > > > > -- > Sent from: http://csound.1045644.n5.nabble.com/Csound-General-f1093014.html > > Csound mailing list > Csound@listserv.heanet.ie > https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND > Send bugs reports to > https://github.com/csound/csound/issues > Discussions of bugs and features can be posted here > Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here |