Csound Csound-dev Csound-tekno Search About

[Csnd] Signal Flow Graph Opcodes, Initialisation and Sean Costellos Reverb

Date2011-03-31 11:21
FromJan Jacob Hofmann
Subject[Csnd] Signal Flow Graph Opcodes, Initialisation and Sean Costellos Reverb
Dear list,

in a setup where audio signals and i-rate signals are passed with  
Signal Flow Graph Opcodes I do experience clicks  in a Sean Costellos  
reverb at the start of every note. The clicks will not be in the  
source-instrument, if the reverb is used there for test reasons, but  
at initialisation time of every new note in the sink instrument, where  
the reverb actually has to reside. So it looks like the clicks appear  
in connection to the use of alwayson within the instrument and the  
reinitialisation.

There is an easy way to solve these clicks: Just set the iskip- 
argument at the reverbsc opcode to "1" and everything is fine. To make  
it a bit more complicated I had to modify that Sean Costello reverb by  
using the version which is a full blown instrument code. It works  
basically similar, but can be changed and modified in regard of the  
personal needs. See:

http://www.adp-gmbh.ch/csound/effects/fdn_reverberator.html

The only drawback: there is no "iskip" argument.

So I do get clicks at init time here, unless I do not find a way to  
solve that problem also for that kind of reverb. I tried to put to  
skip the whole content of the instrument by using rigoto, but this had  
no effect.

one possible solution might be to look at the source code of that  
opcode to see, which operations are affected by that "iskip" argument  
and to apply the same to the code of the reverb instrument, if  
possible. Unfortunately I cannot read C-Language.

Or maybe someone has got a different idea?

Putting alwayson in the header-section of the .csd would solve the  
problem too, but then I could not pass along other i-rate statements  
to the sink instruments. I would like to be able to do so, as I would  
like to produce granular clouds with overlapping notes using these  
instruments.

Any suggestions welcome, test .orc can be found below.

Best regards,

Jan Jacob



sound         |         movement          |          object          
|          space
sonic architecture       |        site: http://www.sonicarchitecture.de
spatial electronic composition     |    2nd order ambisonic music





-n



		connect		"1", "audio_out",		"2", "audio_in"		;connecting a-rate  
output from instr 1 to instr 2
	;alwayson	2

giprint		init		0
instr 1		; source instrument
iskip		init		0				; set to 0: no clicks in test-setting of instr 1
itest		init		0				; set to "1" to play only instr 1 for test output:  
no clicks
giprint		=		giprint + 1
asig		oscil		0dbfs * 0.2, p4, 1		; creating an audio signal
kdeclik		linseg 		0, p3 * 0.01, 1 , p3 - (p3 * 0.02) , 1, p3 * 0.01,  
0	; generate declick envelope
asig		=		asig * kdeclik			; apply declick

if		itest		==	0	goto		sinkinstrumentinvocation
asigL, asigR	reverbsc	asig, asig, 0.7, 18000, sr, 1, iskip		; reverb  
effect
asig		=		asigL + asigR			; sum both channels
		outc 		asig
		print		giprint
				; output the sound
goto		endtest
sinkinstrumentinvocation:


		outleta	"audio_out", asig			; sending the audio signal to channel  
"audio_out"
		alwayson	2, giprint			; starting instr 2 to play simultaneously -  
comment this out instead of the line above
endtest:
endin





instr 2		; sink instrument

iskip		init		0				; set to 1 to skip initialisation: the clicks should  
vanish then
giprint		= p4
asig		inleta		"audio_in"			; reading channel "audio_in"
asigL, asigR	reverbsc	asig, asig, 0.7, 18000, sr, 1, iskip		; reverb  
effect
asig		=		asigL + asigR			; sum both channels
		outc 		asig				; output the sound
		print		giprint
endin






f1	0	8192	10	1				/*	sine */
i1	0	5	220
i1	1	4	440
i1	2	3	880
i1	3	2	1760
i1	4	1	3520









Send bugs reports to the Sourceforge bug tracker
            https://sourceforge.net/tracker/?group_id=81968&atid=564599
Discussions of bugs and features can be posted here
To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"

Date2011-03-31 17:42
FromMichael Gogins
SubjectRe: [Csnd] Signal Flow Graph Opcodes, Initialisation and Sean
Why are you using the alwayson opcode within the scope of another
instrument? Of course this will cause clicks. The idea is to turn the
reverb instrument on only the instrument header. It will remain on
during the entire performance. Every new instr 1 will automatically
copy the connection to the reverb instrument and all will go well. You
will need to extend performance with the s and e statements at the end
of the score to prevent a click with a reverb tail at the end of the
entire performance.

I repeat, both the connections and the always on instruments should be
defined only in the orchestra header. When the score creates new
instrument instances, they will automatically inherit the declared
connections.

If this is not clear, let me know and I will rewrite your example so it works.

Regards,
Mike

On Thu, Mar 31, 2011 at 6:21 AM, Jan Jacob Hofmann
 wrote:
> Dear list,
>
> in a setup where audio signals and i-rate signals are passed with Signal
> Flow Graph Opcodes I do experience clicks  in a Sean Costellos reverb at the
> start of every note. The clicks will not be in the source-instrument, if the
> reverb is used there for test reasons, but at initialisation time of every
> new note in the sink instrument, where the reverb actually has to reside. So
> it looks like the clicks appear in connection to the use of alwayson within
> the instrument and the reinitialisation.
>
> There is an easy way to solve these clicks: Just set the iskip-argument at
> the reverbsc opcode to "1" and everything is fine. To make it a bit more
> complicated I had to modify that Sean Costello reverb by using the version
> which is a full blown instrument code. It works basically similar, but can
> be changed and modified in regard of the personal needs. See:
>
> http://www.adp-gmbh.ch/csound/effects/fdn_reverberator.html
>
> The only drawback: there is no "iskip" argument.
>
> So I do get clicks at init time here, unless I do not find a way to solve
> that problem also for that kind of reverb. I tried to put to skip the whole
> content of the instrument by using rigoto, but this had no effect.
>
> one possible solution might be to look at the source code of that opcode to
> see, which operations are affected by that "iskip" argument and to apply the
> same to the code of the reverb instrument, if possible. Unfortunately I
> cannot read C-Language.
>
> Or maybe someone has got a different idea?
>
> Putting alwayson in the header-section of the .csd would solve the problem
> too, but then I could not pass along other i-rate statements to the sink
> instruments. I would like to be able to do so, as I would like to produce
> granular clouds with overlapping notes using these instruments.
>
> Any suggestions welcome, test .orc can be found below.
>
> Best regards,
>
> Jan Jacob
>
>
>
> sound         |         movement          |          object         |
>    space
> sonic architecture       |        site: http://www.sonicarchitecture.de
> spatial electronic composition     |    2nd order ambisonic music
>
>
>
> 
> 
> -n
> 
> 
>
>                connect         "1", "audio_out",               "2",
> "audio_in"         ;connecting a-rate output from instr 1 to instr 2
>        ;alwayson       2
>
> giprint         init            0
> instr 1         ; source instrument
> iskip           init            0                               ; set to 0:
> no clicks in test-setting of instr 1
> itest           init            0                               ; set to "1"
> to play only instr 1 for test output: no clicks
> giprint         =               giprint + 1
> asig            oscil           0dbfs * 0.2, p4, 1              ; creating
> an audio signal
> kdeclik         linseg          0, p3 * 0.01, 1 , p3 - (p3 * 0.02) , 1, p3 *
> 0.01, 0    ; generate declick envelope
> asig            =               asig * kdeclik                  ; apply
> declick
>
> if              itest           ==      0       goto
>  sinkinstrumentinvocation
> asigL, asigR    reverbsc        asig, asig, 0.7, 18000, sr, 1, iskip
>    ; reverb effect
> asig            =               asigL + asigR                   ; sum both
> channels
>                outc            asig
>                print           giprint
>                                ; output the sound
> goto            endtest
> sinkinstrumentinvocation:
>
>
>                outleta "audio_out", asig                       ; sending the
> audio signal to channel "audio_out"
>                alwayson        2, giprint                      ; starting
> instr 2 to play simultaneously - comment this out instead of the line above
> endtest:
> endin
>
>
>
>
>
> instr 2         ; sink instrument
>
> iskip           init            0                               ; set to 1
> to skip initialisation: the clicks should vanish then
> giprint         = p4
> asig            inleta          "audio_in"                      ; reading
> channel "audio_in"
> asigL, asigR    reverbsc        asig, asig, 0.7, 18000, sr, 1, iskip
>    ; reverb effect
> asig            =               asigL + asigR                   ; sum both
> channels
>                outc            asig                            ; output the
> sound
>                print           giprint
> endin
>
>
>
>
> 
> 
> f1      0       8192    10      1                               /*      sine
> */
> i1      0       5       220
> i1      1       4       440
> i1      2       3       880
> i1      3       2       1760
> i1      4       1       3520
>
>
> 
> 
>
>
>
>
>
> Send bugs reports to the Sourceforge bug tracker
>           https://sourceforge.net/tracker/?group_id=81968&atid=564599
> Discussions of bugs and features can be posted here
> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe
> csound"
>
>



-- 
Michael Gogins
Irreducible Productions
http://www.michael-gogins.com
Michael dot Gogins at gmail dot com


Send bugs reports to the Sourceforge bug tracker
            https://sourceforge.net/tracker/?group_id=81968&atid=564599
Discussions of bugs and features can be posted here
To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"


Date2011-03-31 17:52
FromMichael Gogins
SubjectRe: [Csnd] Signal Flow Graph Opcodes, Initialisation and Sean
I said instrument header, I meant orchestra header...

On Thu, Mar 31, 2011 at 12:42 PM, Michael Gogins
 wrote:
> Why are you using the alwayson opcode within the scope of another
> instrument? Of course this will cause clicks. The idea is to turn the
> reverb instrument on only the instrument header. It will remain on
> during the entire performance. Every new instr 1 will automatically
> copy the connection to the reverb instrument and all will go well. You
> will need to extend performance with the s and e statements at the end
> of the score to prevent a click with a reverb tail at the end of the
> entire performance.
>
> I repeat, both the connections and the always on instruments should be
> defined only in the orchestra header. When the score creates new
> instrument instances, they will automatically inherit the declared
> connections.
>
> If this is not clear, let me know and I will rewrite your example so it works.
>
> Regards,
> Mike
>
> On Thu, Mar 31, 2011 at 6:21 AM, Jan Jacob Hofmann
>  wrote:
>> Dear list,
>>
>> in a setup where audio signals and i-rate signals are passed with Signal
>> Flow Graph Opcodes I do experience clicks  in a Sean Costellos reverb at the
>> start of every note. The clicks will not be in the source-instrument, if the
>> reverb is used there for test reasons, but at initialisation time of every
>> new note in the sink instrument, where the reverb actually has to reside. So
>> it looks like the clicks appear in connection to the use of alwayson within
>> the instrument and the reinitialisation.
>>
>> There is an easy way to solve these clicks: Just set the iskip-argument at
>> the reverbsc opcode to "1" and everything is fine. To make it a bit more
>> complicated I had to modify that Sean Costello reverb by using the version
>> which is a full blown instrument code. It works basically similar, but can
>> be changed and modified in regard of the personal needs. See:
>>
>> http://www.adp-gmbh.ch/csound/effects/fdn_reverberator.html
>>
>> The only drawback: there is no "iskip" argument.
>>
>> So I do get clicks at init time here, unless I do not find a way to solve
>> that problem also for that kind of reverb. I tried to put to skip the whole
>> content of the instrument by using rigoto, but this had no effect.
>>
>> one possible solution might be to look at the source code of that opcode to
>> see, which operations are affected by that "iskip" argument and to apply the
>> same to the code of the reverb instrument, if possible. Unfortunately I
>> cannot read C-Language.
>>
>> Or maybe someone has got a different idea?
>>
>> Putting alwayson in the header-section of the .csd would solve the problem
>> too, but then I could not pass along other i-rate statements to the sink
>> instruments. I would like to be able to do so, as I would like to produce
>> granular clouds with overlapping notes using these instruments.
>>
>> Any suggestions welcome, test .orc can be found below.
>>
>> Best regards,
>>
>> Jan Jacob
>>
>>
>>
>> sound         |         movement          |          object         |
>>    space
>> sonic architecture       |        site: http://www.sonicarchitecture.de
>> spatial electronic composition     |    2nd order ambisonic music
>>
>>
>>
>> 
>> 
>> -n
>> 
>> 
>>
>>                connect         "1", "audio_out",               "2",
>> "audio_in"         ;connecting a-rate output from instr 1 to instr 2
>>        ;alwayson       2
>>
>> giprint         init            0
>> instr 1         ; source instrument
>> iskip           init            0                               ; set to 0:
>> no clicks in test-setting of instr 1
>> itest           init            0                               ; set to "1"
>> to play only instr 1 for test output: no clicks
>> giprint         =               giprint + 1
>> asig            oscil           0dbfs * 0.2, p4, 1              ; creating
>> an audio signal
>> kdeclik         linseg          0, p3 * 0.01, 1 , p3 - (p3 * 0.02) , 1, p3 *
>> 0.01, 0    ; generate declick envelope
>> asig            =               asig * kdeclik                  ; apply
>> declick
>>
>> if              itest           ==      0       goto
>>  sinkinstrumentinvocation
>> asigL, asigR    reverbsc        asig, asig, 0.7, 18000, sr, 1, iskip
>>    ; reverb effect
>> asig            =               asigL + asigR                   ; sum both
>> channels
>>                outc            asig
>>                print           giprint
>>                                ; output the sound
>> goto            endtest
>> sinkinstrumentinvocation:
>>
>>
>>                outleta "audio_out", asig                       ; sending the
>> audio signal to channel "audio_out"
>>                alwayson        2, giprint                      ; starting
>> instr 2 to play simultaneously - comment this out instead of the line above
>> endtest:
>> endin
>>
>>
>>
>>
>>
>> instr 2         ; sink instrument
>>
>> iskip           init            0                               ; set to 1
>> to skip initialisation: the clicks should vanish then
>> giprint         = p4
>> asig            inleta          "audio_in"                      ; reading
>> channel "audio_in"
>> asigL, asigR    reverbsc        asig, asig, 0.7, 18000, sr, 1, iskip
>>    ; reverb effect
>> asig            =               asigL + asigR                   ; sum both
>> channels
>>                outc            asig                            ; output the
>> sound
>>                print           giprint
>> endin
>>
>>
>>
>>
>> 
>> 
>> f1      0       8192    10      1                               /*      sine
>> */
>> i1      0       5       220
>> i1      1       4       440
>> i1      2       3       880
>> i1      3       2       1760
>> i1      4       1       3520
>>
>>
>> 
>> 
>>
>>
>>
>>
>>
>> Send bugs reports to the Sourceforge bug tracker
>>           https://sourceforge.net/tracker/?group_id=81968&atid=564599
>> Discussions of bugs and features can be posted here
>> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe
>> csound"
>>
>>
>
>
>
> --
> Michael Gogins
> Irreducible Productions
> http://www.michael-gogins.com
> Michael dot Gogins at gmail dot com
>
>
> Send bugs reports to the Sourceforge bug tracker
>            https://sourceforge.net/tracker/?group_id=81968&atid=564599
> Discussions of bugs and features can be posted here
> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"
>
>



-- 
Michael Gogins
Irreducible Productions
http://www.michael-gogins.com
Michael dot Gogins at gmail dot com


Send bugs reports to the Sourceforge bug tracker
            https://sourceforge.net/tracker/?group_id=81968&atid=564599
Discussions of bugs and features can be posted here
To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"