EasyC audio support - a comment for Intelitek

It’s been 20 months since the VEX speaker was announced and Intelitek has just released official sound support for EasyC.

I’m not sure I authorized my sound library for use in commercial products, in fact, it did not contain any licensing information just a copyright notice which technically means anyone using it was supposed to get permission in writing.

EasyC contains some interesting variables, for example

00000000 l    df *ABS*	00000000 AudioRtttlPlayer.c
00000000 l    d  .text	00000000 .text
00000000 l    d  .data	00000000 .data
00000000 l    d  .bss	00000000 .bss
00000000 l       .bss	00000000 Sine12bit
00000000 l     O .data	00000030 notefreq
00000040 l       .bss	00000000 VSL_Counter
00000044 l       .bss	00000000 VSL_ctarray
00000048 l       .bss	00000000 ctSetPtr
0000004c l       .bss	00000000 ctPlayPtr
00000050 l       .bss	00000000 ctSize
00000054 l       .bss	00000000 ctAmplitude
00000058 l       .bss	00000000 ucRepeatTune
00000059 l       .bss	00000000 ucRepeatTone
0000005c l       .bss	00000000 DAC_InitStructure
0000006c l       .bss	00000000 DMA_InitStructure
00000098 l       .bss	00000000 TIM_TimeBaseStructure

Compare this to some variables from the rtttl code in my sound library.

// pointer for chiptone array
static  vsl_ct  *VSL_ctarray;

// various variables for chiptone music
static  int     ctSetPtr;
static  int     ctPlayPtr;
static  int     ctSize;
static  int     ctRepeat;

Much of the rtttl code I used was copyright Michael Ringgaard, he has specific licensing terms, an extract.

/* Copyright (C) 2002 Michael Ringgaard. All rights reserved.                  */
/*                                                                             */
/* Redistribution and use in source and binary forms, with or without          */
/* modification, are permitted provided that the following conditions          */
/* are met:                                                                    */
/*                                                                             */
/* 1. Redistributions of source code must retain the above copyright           */
/*    notice, this list of conditions and the following disclaimer.            */
/* 2. **Redistributions in binary form must reproduce the above copyright**                  */
/*    **notice**, this list of conditions and the following disclaimer in the       */
/*    documentation and/or other materials provided with the distribution.     */
/* 3. Neither the name of the project nor the names of its contributors        */
/*    may be used to endorse or promote products derived from this software    */
/*    without specific prior written permission.                               */

To say the least I am not amused, Intellitek needs to make this right, some credit at the very least, more likely some compensation.


The PROS team does not have any legal experts, so we won’t comment on the actions of Intelitek. However, we would like to note that the PROS audio library does not use the code mentioned above; it does use many of the same principles, but has multiple voice support and several improvements to synthesis quality, especially under heavy interrupt traffic. The requirements for multiple voice support meant that the sine generator and music string parser were all written from the ground up by the PROS team.


I was never in any doubt about that, you guys are far too talented.

We all stand on the shoulders of giants and use the development work of our peers, however, the use of unmodified code written by others without giving credit is bad form. The fact that they didn’t even change the function and variable names, quite incredible. Anyway, I will give them a chance to explain, I assume that there is just a misunderstanding as to the terms that I release code to the community. Some is licensed as open source, some not, all is covered by copyright and credit should always be given to the author of a copyrighted work.


Ha! I see what you did there!

I’m slightly confused, are you also fessing up to infringing on Michael Ringgaard’s code as you stated that you didn’t have his copyright notice?

Regardless, perhaps you should contact Intelitek directly, as a public forum post may not be the most appropriate pathway to deal with the situation. Presumably, you should contact the infringing party privately, and if they don’t respond or deny the infringement, then public pressure would be appropriate.

To give a semi-related case (though not nearly on the magnitude of copyright infringement): the issues with the VEX Toss Up app not properly displaying on large screens. I had attempted to notify DWAB Technology, to no response. Daniel took the liberty to publicly notify DWAB Tech to their issues and after a bit of pressure, we are kinda-sorta seeing some progress… at least they’ve acknowledged it :rolleyes: Obviously the magnitude is different, but the process is the same.

Sorry if that seemed a bit rude, but I’d hate to be bashed for an honest mistake - which may very well be the case here, which I’m sure Intelitek would prefer not to happen as well. I may not be a fan of Intelitek/easyC but I believe giving the company a fair chance to fix the issue privately would be preferable to all.


I have a lot of respect for the PROS team and their accomplishments.

No, I gave Michael full credit and also ST Micro for my inclusion of parts of the standard peripheral library. I had released source code so it was easier to do that.

I always poke around in libraries to see what others are up to. I was sort of blown away to find all the indications that my original code was used almost verbatim for the RTTTL playback, some function names were modified, some were left alone. I posted the code for use by individuals and teams, I did not expect it to be used in a commercial product, it was not released open source (it should have been but that was my mistake). Michael Ringgaard had very specific licensing terms which were completely ignored, it’s unacceptable for a professional programmer to ignore these terms and, as much as anything, I wanted to make a point publicly.

We all look at other peoples code, but there is a difference between reading code, understanding, learning and rewriting compared to plagiarism without giving credit.

And yes, I’m still annoyed and it’s only Monday :frowning:


We are in contact with James directly now and will ensure that we resolve the issue to everyone’s satisfaction. It is never our intention to use code of others in our easyC program without proper approval - and if an error was made it is completely unintentional. We appreciate this being brought to our attention.

Beyond just the issue with the code being potentially copied and not cited - its an even bigger deal because EasyC is charging people to purchase their project. They are directly profiting off of Jpearman and Michael Ringgaard’s work if the allegations of copying are valid.