Csound Csound-dev Csound-tekno Search About

[Cs-dev] Removed XINCOD/XOUTCOD

Date2014-07-29 04:38
FromSteven Yi
Subject[Cs-dev] Removed XINCOD/XOUTCOD
Hi All,

I've pushed a commit that removes xincod and xoutcod from the TEXT
struct.  This also removes the use of the XINARG macros, replacing
them with calls to IS_ASIG_ARG and use of RTTI.  It ended up touching
a lot of the codebase.  So far, in the light testing I've done, things
seem to be running okay. Any testing with regards to modified opcodes
would be very much appreciated.

Notes:

* I found quite a bug in
sfplay/sfplaym/sfplay3/sfplay3m/sfinstr/sfinstrm/sfinstr3/sfinstr3m.
It looks like it checked if xincod was set at all for any field, and
if so, then assumed both xcps and xamp were audio-rate, when only one
or the other might be
an asig.

*rspline (both versions) also made the same errant assumption as the
sf- opcodes but for its rangeMin and rangeMax arguments.

* randomi and randomh was checking the xincod of the wrong arg (arg 2
instead of 3, which is xcps).  It may have produced wrong output if
cps was a-rate.

* the stack opcodes seem to be messed up. They're problematic in the
version before I made this change.  I think the stack opcodes should
just be removed as I think they're dangerous, aren't multi-thread
safe, and promote bad programming patterns within csound coding.


Also, I found a bug in Csound where INOCOUNT (and assuming OUTOCOUNT)
are not being calculated correctly.  It looks like in the past, these
values should be set with the actual number of args set on an opcode.
However, it is currently being set to the number of args including
optional ones that were appended to the TREE.  My guess is this has
been a long-standing issue.  However, it's a subtle one, as var-args
would not get appended to the TREE, but optional args would.

I noticed the bug when I tried changing vco2's OENTRY to "kkoOOo"
instead of "kkoM".  The opcode really should have the former, but when
changing to it it causes the opcode to not initialize correctly.  The
vco2_set function depends on INOCOUNT to be set correctly.

I don't know the full ramifications of this bug.  I will investigate
tomorrow the usage of INOCOUNT and OUTOCOUNT in CS5, as I think this
bug was introduced in CS6.

Thanks,
steven

------------------------------------------------------------------------------
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls. 
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
_______________________________________________
Csound-devel mailing list
Csound-devel@lists.sourceforge.net

Date2014-07-29 09:43
Fromjpff@cs.bath.ac.uk
SubjectRe: [Cs-dev] Removed XINCOD/XOUTCOD
AttachmentsNone  

Date2014-07-29 14:14
FromVictor Lazzarini
SubjectRe: [Cs-dev] Removed XINCOD/XOUTCOD
I was just reading this thread from 2006

http://csound.1045644.n5.nabble.com/passing-a-string-to-a-UDO-td1099284.html

and it looks like the reason for these opcodes has largely disappeared with
Csound 6. I think they were probably not used, as they look horrible anyway.
We could deprecate and forget about them.

Regards
========================
Dr Victor Lazzarini
Senior Lecturer
NUI Maynooth, Ireland
victor dot lazzarini at nuim dot ie




On 29 Jul 2014, at 04:38, Steven Yi  wrote:

> Hi All,
> 
> I've pushed a commit that removes xincod and xoutcod from the TEXT
> struct.  This also removes the use of the XINARG macros, replacing
> them with calls to IS_ASIG_ARG and use of RTTI.  It ended up touching
> a lot of the codebase.  So far, in the light testing I've done, things
> seem to be running okay. Any testing with regards to modified opcodes
> would be very much appreciated.
> 
> Notes:
> 
> * I found quite a bug in
> sfplay/sfplaym/sfplay3/sfplay3m/sfinstr/sfinstrm/sfinstr3/sfinstr3m.
> It looks like it checked if xincod was set at all for any field, and
> if so, then assumed both xcps and xamp were audio-rate, when only one
> or the other might be
> an asig.
> 
> *rspline (both versions) also made the same errant assumption as the
> sf- opcodes but for its rangeMin and rangeMax arguments.
> 
> * randomi and randomh was checking the xincod of the wrong arg (arg 2
> instead of 3, which is xcps).  It may have produced wrong output if
> cps was a-rate.
> 
> * the stack opcodes seem to be messed up. They're problematic in the
> version before I made this change.  I think the stack opcodes should
> just be removed as I think they're dangerous, aren't multi-thread
> safe, and promote bad programming patterns within csound coding.
> 
> 
> Also, I found a bug in Csound where INOCOUNT (and assuming OUTOCOUNT)
> are not being calculated correctly.  It looks like in the past, these
> values should be set with the actual number of args set on an opcode.
> However, it is currently being set to the number of args including
> optional ones that were appended to the TREE.  My guess is this has
> been a long-standing issue.  However, it's a subtle one, as var-args
> would not get appended to the TREE, but optional args would.
> 
> I noticed the bug when I tried changing vco2's OENTRY to "kkoOOo"
> instead of "kkoM".  The opcode really should have the former, but when
> changing to it it causes the opcode to not initialize correctly.  The
> vco2_set function depends on INOCOUNT to be set correctly.
> 
> I don't know the full ramifications of this bug.  I will investigate
> tomorrow the usage of INOCOUNT and OUTOCOUNT in CS5, as I think this
> bug was introduced in CS6.
> 
> Thanks,
> steven
> 
> ------------------------------------------------------------------------------
> Infragistics Professional
> Build stunning WinForms apps today!
> Reboot your WinForms applications with our WinForms controls. 
> Build a bridge from your legacy apps to the future.
> http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
> _______________________________________________
> Csound-devel mailing list
> Csound-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/csound-devel


------------------------------------------------------------------------------
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls. 
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
_______________________________________________
Csound-devel mailing list
Csound-devel@lists.sourceforge.net

Date2014-07-29 15:08
FromSteven Yi
SubjectRe: [Cs-dev] Removed XINCOD/XOUTCOD
I'd rather just flat out remove the stack opcodes.  It looks like
they've been broken since CS6 anyways, and no one has complained.  Any
objections if I ask the users list if anyone is using them?  Another
possibility is to delete the implementation and just return
CSOUND_ERROR with a message that the opcodes were removed, and
deprecate as you mention.  Or just leave it broken and deprecate.  I'd
rather like to remove them as I just don't think they belong in
Csound.

On Tue, Jul 29, 2014 at 9:14 AM, Victor Lazzarini
 wrote:
> I was just reading this thread from 2006
>
> http://csound.1045644.n5.nabble.com/passing-a-string-to-a-UDO-td1099284.html
>
> and it looks like the reason for these opcodes has largely disappeared with
> Csound 6. I think they were probably not used, as they look horrible anyway.
> We could deprecate and forget about them.
>
> Regards
> ========================
> Dr Victor Lazzarini
> Senior Lecturer
> NUI Maynooth, Ireland
> victor dot lazzarini at nuim dot ie
>
>
>
>
> On 29 Jul 2014, at 04:38, Steven Yi  wrote:
>
>> Hi All,
>>
>> I've pushed a commit that removes xincod and xoutcod from the TEXT
>> struct.  This also removes the use of the XINARG macros, replacing
>> them with calls to IS_ASIG_ARG and use of RTTI.  It ended up touching
>> a lot of the codebase.  So far, in the light testing I've done, things
>> seem to be running okay. Any testing with regards to modified opcodes
>> would be very much appreciated.
>>
>> Notes:
>>
>> * I found quite a bug in
>> sfplay/sfplaym/sfplay3/sfplay3m/sfinstr/sfinstrm/sfinstr3/sfinstr3m.
>> It looks like it checked if xincod was set at all for any field, and
>> if so, then assumed both xcps and xamp were audio-rate, when only one
>> or the other might be
>> an asig.
>>
>> *rspline (both versions) also made the same errant assumption as the
>> sf- opcodes but for its rangeMin and rangeMax arguments.
>>
>> * randomi and randomh was checking the xincod of the wrong arg (arg 2
>> instead of 3, which is xcps).  It may have produced wrong output if
>> cps was a-rate.
>>
>> * the stack opcodes seem to be messed up. They're problematic in the
>> version before I made this change.  I think the stack opcodes should
>> just be removed as I think they're dangerous, aren't multi-thread
>> safe, and promote bad programming patterns within csound coding.
>>
>>
>> Also, I found a bug in Csound where INOCOUNT (and assuming OUTOCOUNT)
>> are not being calculated correctly.  It looks like in the past, these
>> values should be set with the actual number of args set on an opcode.
>> However, it is currently being set to the number of args including
>> optional ones that were appended to the TREE.  My guess is this has
>> been a long-standing issue.  However, it's a subtle one, as var-args
>> would not get appended to the TREE, but optional args would.
>>
>> I noticed the bug when I tried changing vco2's OENTRY to "kkoOOo"
>> instead of "kkoM".  The opcode really should have the former, but when
>> changing to it it causes the opcode to not initialize correctly.  The
>> vco2_set function depends on INOCOUNT to be set correctly.
>>
>> I don't know the full ramifications of this bug.  I will investigate
>> tomorrow the usage of INOCOUNT and OUTOCOUNT in CS5, as I think this
>> bug was introduced in CS6.
>>
>> Thanks,
>> steven
>>
>> ------------------------------------------------------------------------------
>> Infragistics Professional
>> Build stunning WinForms apps today!
>> Reboot your WinForms applications with our WinForms controls.
>> Build a bridge from your legacy apps to the future.
>> http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
>> _______________________________________________
>> Csound-devel mailing list
>> Csound-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/csound-devel
>
>
> ------------------------------------------------------------------------------
> Infragistics Professional
> Build stunning WinForms apps today!
> Reboot your WinForms applications with our WinForms controls.
> Build a bridge from your legacy apps to the future.
> http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
> _______________________________________________
> Csound-devel mailing list
> Csound-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/csound-devel

------------------------------------------------------------------------------
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls. 
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
_______________________________________________
Csound-devel mailing list
Csound-devel@lists.sourceforge.net