Csound Csound-dev Csound-tekno Search About

What Do FL and EXP Mean in Csound Source Code?

Date2017-03-15 02:36
FromEmmett Palaima
SubjectWhat Do FL and EXP Mean in Csound Source Code?
Hi I am looking at the source code for the follow2 opcode in Csound: https://github.com/csound/csound/blob/2ef3d7cd3f0a910122a61bf45d7fd7b1f22724fa/Opcodes/follow.c, and am finding the following lines used to set the attack parameter somewhat confusing: 

if (p->lastatt!=*p->attack) {
p->lastatt = *p->attack;
if (p->lastatt<=FL(0.0))
ga = p->ga = EXP(- FL(69.0775527898)*csound->onedsr);
// EXP(-FL(10000.0)*csound->onedsr);
else
ga = p->ga = EXP(- FL(6.90775527898)/(CS_ESR* p->lastatt));
//EXP(-FL(1.0)/(CS_ESR* p->lastatt));
}
What do EXP and FL mean in this context? I am thinking EXP(x) is e^x, is this correct? What is FL doing (maybe casting as float?)? 

Lastly, I assume CS_ESR and *csound->onedsr are accessing the sample rate, but what is the purpose of using these two different methods to get it?

Thanks!
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

Date2017-03-15 05:51
FromNikhil Singh
SubjectRe: What Do FL and EXP Mean in Csound Source Code?
I could be wrong but I think you're right - looks like EXP is #defined as exp (which is e^x), and FL is #defined as x##f which essentially concatenates the 'f' token with the number, making it a float rather than implicitly a double (the equivalent of 3.3f for example, rather than 3.3).

On Tue, Mar 14, 2017 at 10:36 PM, Emmett Palaima <epalaima@berklee.edu> wrote:
Hi I am looking at the source code for the follow2 opcode in Csound: https://github.com/csound/csound/blob/2ef3d7cd3f0a910122a61bf45d7fd7b1f22724fa/Opcodes/follow.c, and am finding the following lines used to set the attack parameter somewhat confusing: 

if (p->lastatt!=*p->attack) {
p->lastatt = *p->attack;
if (p->lastatt<=FL(0.0))
ga = p->ga = EXP(- FL(69.0775527898)*csound->onedsr);
// EXP(-FL(10000.0)*csound->onedsr);
else
ga = p->ga = EXP(- FL(6.90775527898)/(CS_ESR* p->lastatt));
//EXP(-FL(1.0)/(CS_ESR* p->lastatt));
}
What do EXP and FL mean in this context? I am thinking EXP(x) is e^x, is this correct? What is FL doing (maybe casting as float?)? 

Lastly, I assume CS_ESR and *csound->onedsr are accessing the sample rate, but what is the purpose of using these two different methods to get it?

Thanks!
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

Date2017-03-15 12:05
FromJohn ff
SubjectRe: What Do FL and EXP Mean in Csound Source Code?
EXP is a macro that deals with float/double option. FL is similar for constants.

Sent from TypeApp
On 15 Mar 2017, at 05:52, Nikhil Singh <nsingh1@BERKLEE.EDU> wrote:
I could be wrong but I think you're right - looks like EXP is #defined as exp (which is e^x), and FL is #defined as x##f which essentially concatenates the 'f' token with the number, making it a float rather than implicitly a double (the equivalent of 3.3f for example, rather than 3.3).

On Tue, Mar 14, 2017 at 10:36 PM, Emmett Palaima <epalaima@berklee.edu> wrote:
Hi I am looking at the source code for the follow2 opcode in Csound:  https://github.com/csound/csound/blob/2ef3d7cd3f0a910122a61bf45d7fd7b1f22724fa/Opcodes/follow.c, and am finding the following lines used to set the attack parameter somewhat confusing: 

if (p->lastatt!=*p->attack) {
p->lastatt = *p->attack;
if (p->lastatt<=FL(0.0))
ga = p->ga = EXP(- FL(69.0775527898)*csound->onedsr);
// EXP(-FL(10000.0)*csound->onedsr);
else
ga = p->ga = EXP(- FL(6.90775527898)/(CS_ESR* p->lastatt));
//EXP(-FL(1.0)/(CS_ESR* p->lastatt));
}
What do EXP and FL mean in this context? I am thinking EXP(x) is e^x, is this correct? What is FL doing (maybe casting as float?)? 

Lastly, I assume CS_ESR and *csound->onedsr are accessing the sample rate, but what is the purpose of using these two different methods to get it?

Thanks!
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

Date2017-03-15 12:06
FromJohn ff
SubjectRe: What Do FL and EXP Mean in Csound Source Code?
Onedsr =. 1/sr

Sent from TypeApp
On 15 Mar 2017, at 02:37, Emmett Palaima <epalaima@BERKLEE.EDU> wrote:
Hi I am looking at the source code for the follow2 opcode in Csound: https://github.com/csound/csound/blob/2ef3d7cd3f0a910122a61bf45d7fd7b1f22724fa/Opcodes/follow.c, and am finding the following lines used to set the attack parameter somewhat confusing: 

if (p->lastatt!=*p->attack) {
p->lastatt = *p->attack;
if (p->lastatt<=FL(0.0))
ga = p->ga = EXP(- FL(69.0775527898)*csound->onedsr);
// EXP(-FL(10000.0)*csound->onedsr);
else
ga = p->ga = EXP(- FL(6.90775527898)/(CS_ESR* p->lastatt));
//EXP(-FL(1.0)/(CS_ESR* p->lastatt));
}
What do EXP and FL mean in this context? I am thinking EXP(x) is e^x, is this correct? What is FL doing (maybe casting as float?)? 

Lastly, I assume CS_ESR and *csound->onedsr are accessing the sample rate, but what is the purpose of using these two different methods to get it?

Thanks!
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