| I took a very brief look at the csdebugger branch. The one thing I saw
that looked odd was that kperf_nodebug and kperf_debug were set on the
csound struct. It seems to me that those can be removed and just use
the function pointer directly, i.e. csound->kperf = kperf or
csound->kperf = kperf_debug.
There seems to be a few other changes but I'm having a hard time
isolating them as some were recent and others from much further in the
past. I'm wondering though about if this should be a build time
option or not. If it's not built by default, then
packagers/individuals might not turn it on to build, then host apps
might or might not run if that is enabled or not. (I guess one could
always query the csound version first, then do not call debug related
functions if it is < 6.03.0.
I don't have any big objections to this stuff going in except that
that above should be resolved. We had set a target of "around this
time" to do a release. I'd be up for waiting to get this
incorporated.
On Thu, Apr 17, 2014 at 2:49 PM, Andres Cabrera wrote:
> Also, since a release is coming up, can the csdebugger branch be considered
> for inclusion?
>
> Cheers,
> Andrés
>
>
> On Thu, Apr 17, 2014 at 11:48 AM, Andres Cabrera
> wrote:
>>
>> Hi Rory,
>>
>> I've just added the little application you posted to the csound sources
>> (csdebugger branch), so that it can be built and distributed with Csound,
>> and to allow people to debug from the command line. Hopefully we'll get more
>> of the core developers commenting now :)
>>
>> I don't know if there's an API call for getting instrument numbers from
>> names, is there?
>>
>> Cheers,
>> Andrés
>>
>>
>> On Thu, Apr 17, 2014 at 3:12 AM, Rory Walsh wrote:
>>>
>>> Can I ask that support be added for named instruments? Or perhaps
>>> there exists an API function that when passed an instrument name will
>>> return the assigned number? That would work too.
>>>
>>> On 13 April 2014 16:38, Steven Yi wrote:
>>> > I think Andres was talking about having a nice function to wrap the
>>> > pointer addition. I'd suggest something like:
>>> >
>>> > void* csoundGetVariableMem(CSOUND* csound, INSDS* instance, char*
>>> > varName) {
>>> > CS_VARIABLE* var = csoundFindVariableWithName(csound,
>>> > instance->instr->varPool, varName);
>>> >
>>> > if(var == NULL) return NULL;
>>> >
>>> > return insds->lclbas + var->memBlockIndex;
>>> > }
>>> >
>>> > I don't know though if the API would be more often used though with
>>> > the calling code already having all of the var pool var's, i.e.
>>> > reading from the instance->insds->varPool->head first. If so, the
>>> > above could be simplified to take in the var and just remove the
>>> > csoundFindVariableWithName. It'd probably be best to hide the
>>> > implementation details as it would give us flexibility to change
>>> > things in the future.
>>> >
>>> > On Sun, Apr 13, 2014 at 11:27 AM, Rory Walsh wrote:
>>> >> It looks pretty good from here. I guess so long as one is sure to
>>> >> clean up the breakpoints there shouldn't be any issues. I am however
>>> >> having a problem with csoundDebugNext(). Should this trigger the
>>> >> breakpoint callback too? I'm not getting anything?
>>> >>
>>> >> On 13 April 2014 16:21, Andres Cabrera wrote:
>>> >>> I'm thinking the debugger API could offer some facilties for common
>>> >>> tasks
>>> >>> like variable querying to remove that pointer uglyness.
>>> >>>
>>> >>> I would also like to see this in mainline Csound, but I'd like some
>>> >>> feedback
>>> >>> from others first as to whether the way I've done it is the best
>>> >>> possible.
>>> >>>
>>> >>> Cheers,
>>> >>> Andrés
>>> >>>
>>> >>>
>>> >>> On Sun, Apr 13, 2014 at 8:15 AM, Rory Walsh wrote:
>>> >>>>
>>> >>>> Found it!
>>> >>>>
>>> >>>> On 13 April 2014 11:46, Rory Walsh wrote:
>>> >>>> > Actually, I can't seem to find that? It's not a member of CSOUND?
>>> >>>> >
>>> >>>> > On 13 April 2014 10:54, Rory Walsh wrote:
>>> >>>> >> That's easy. Nice one.
>>> >>>> >>
>>> >>>> >> On 13 Apr 2014 09:44, "Victor Lazzarini"
>>> >>>> >>
>>> >>>> >> wrote:
>>> >>>> >>>
>>> >>>> >>> csound->GetKcounter( )
>>> >>>> >>>
>>> >>>> >>>
>>> >>>> >>>
>>> >>>> >>>
>>> >>>> >>> http://csound.sourceforge.net/doc/html/structCSOUND__.html#ae0abaab5bdc10f2ab0f0db410a8c6502
>>> >>>> >>> ========================
>>> >>>> >>> Dr Victor Lazzarini
>>> >>>> >>> Senior Lecturer
>>> >>>> >>> NUI Maynooth, Ireland
>>> >>>> >>> victor dot lazzarini at nuim dot ie
>>> >>>> >>>
>>> >>>> >>>
>>> >>>> >>>
>>> >>>> >>>
>>> >>>> >>> On 12 Apr 2014, at 18:36, Rory Walsh wrote:
>>> >>>> >>>
>>> >>>> >>> > Finally, how can one query the current k-pass, as in how many
>>> >>>> >>> > k-cycles
>>> >>>> >>> > have passed? I can put in a counter in my own processing
>>> >>>> >>> > thread, but
>>> >>>> >>> > I
>>> >>>> >>> > thought it might be simple to grab from Csound?
>>> >>>> >>> >
>>> >>>> >>> > On 12 April 2014 13:20, Rory Walsh wrote:
>>> >>>> >>> >> Hi Andres. All going good here. I just wanted to ask you
>>> >>>> >>> >> something
>>> >>>> >>> >> about the implementation. Am I right in saying that whenever
>>> >>>> >>> >> csoundDebuggerInit() is called the CSOUND structure that is
>>> >>>> >>> >> passed
>>> >>>> >>> >> to
>>> >>>> >>> >> it gets appended with some csdebug_data_t data? This data
>>> >>>> >>> >> block is
>>> >>>> >>> >> then zeroed and removed when one calls csoundDebuggerClean()?
>>> >>>> >>> >> One
>>> >>>> >>> >> little issue I have is that I seem to have to call
>>> >>>> >>> >> csoundDebuggerInit() before I set my breakpoints, that is
>>> >>>> >>> >> every
>>> >>>> >>> >> time I
>>> >>>> >>> >> set a breakpoint or call any of the debugger methods I have
>>> >>>> >>> >> to call
>>> >>>> >>> >> csoundDebuggerInit() first. Otherwise I get an assert in the
>>> >>>> >>> >> breakpoint functions because csound->csdebug_data_t is no
>>> >>>> >>> >> longer
>>> >>>> >>> >> valid. I guess there is no harm in calling
>>> >>>> >>> >> csoundDebuggerInit()
>>> >>>> >>> >> each
>>> >>>> >>> >> time one updates or removes a breakpoint if all it does it
>>> >>>> >>> >> add/overwrite a data block in the underlying Csound object?
>>> >>>> >>> >> I'd
>>> >>>> >>> >> love
>>> >>>> >>> >> to see this in the next release. It would be nice to ship a
>>> >>>> >>> >> command
>>> >>>> >>> >> line app in all packages that would work like the gdb
>>> >>>> >>> >> debugger.
>>> >>>> >>> >>
>>> >>>> >>> >> On 11 April 2014 22:51, Rory Walsh wrote:
>>> >>>> >>> >>> This is really great Andres. I threw together a simple
>>> >>>> >>> >>> command
>>> >>>> >>> >>> line
>>> >>>> >>> >>> application that perhaps you could add to the test suite? I
>>> >>>> >>> >>> just
>>> >>>> >>> >>> robbed what I could understand from yours and slotted it
>>> >>>> >>> >>> into as
>>> >>>> >>> >>> basic
>>> >>>> >>> >>> an example as I could think off.
>>> >>>> >>> >>>
>>> >>>> >>> >>> Usage:
>>> >>>> >>> >>>
>>> >>>> >>> >>> ./csddebug [filename.csd] [instrument number] [ksmps offset]
>>> >>>> >>> >>>
>>> >>>> >>> >>> Once the breakpoint at the given k-cycle is hit the debugger
>>> >>>> >>> >>> will
>>> >>>> >>> >>> print the values of each of the variables in the chosen
>>> >>>> >>> >>> instrument
>>> >>>> >>> >>> ala
>>> >>>> >>> >>>
>>> >>>> >>> >>> ==============================================
>>> >>>> >>> >>> Breakpoint at instr 1
>>> >>>> >>> >>> Number of k-cycles into performance: 100
>>> >>>> >>> >>> ------------------------------------------------------
>>> >>>> >>> >>> VarName:Schannel value = hello varType[S]
>>> >>>> >>> >>> VarName:k1 value = 0.580499 varType[k]
>>> >>>> >>> >>> VarName:aout value = 0.0823895 varType[a]
>>> >>>> >>> >>> VarName:ksmps varType[r]
>>> >>>> >>> >>>
>>> >>>> >>> >>> I have to say hats off. This is very clever. I can't wait to
>>> >>>> >>> >>> add
>>> >>>> >>> >>> something like this to Cabbage.
>>> >>>> >>> >>>
>>> >>>> >>> >>>
>>> >>>> >>> >>> On 11 April 2014 22:08, Andres Cabrera
>>> >>>> >>> >>>
>>> >>>> >>> >>> wrote:
>>> >>>> >>> >>>> Hi,
>>> >>>> >>> >>>>
>>> >>>> >>> >>>> Good to hear you've got it going. The only performance
>>> >>>> >>> >>>> penalty if
>>> >>>> >>> >>>> you
>>> >>>> >>> >>>> don't
>>> >>>> >>> >>>> call csoundDebuggerInit is that kperf is a function pointer
>>> >>>> >>> >>>> rather
>>> >>>> >>> >>>> than a
>>> >>>> >>> >>>> function. If you have called csoundDebuggerInit, then you
>>> >>>> >>> >>>> will be
>>> >>>> >>> >>>> running a
>>> >>>> >>> >>>> slightly heavier kperf_debug function, which needs to check
>>> >>>> >>> >>>> whether
>>> >>>> >>> >>>> there
>>> >>>> >>> >>>> are new debug commands (like break, continue, or new
>>> >>>> >>> >>>> breakpoints),
>>> >>>> >>> >>>> and which
>>> >>>> >>> >>>> needs to check on every new instrument in the chain whether
>>> >>>> >>> >>>> it
>>> >>>> >>> >>>> matches one
>>> >>>> >>> >>>> of the existing breakpoints. It's not too much, since it's
>>> >>>> >>> >>>> done
>>> >>>> >>> >>>> at
>>> >>>> >>> >>>> control
>>> >>>> >>> >>>> rate, but there is a penalty. Performance during debugging
>>> >>>> >>> >>>> will
>>> >>>> >>> >>>> also
>>> >>>> >>> >>>> get a
>>> >>>> >>> >>>> little worse once line breakpoints are implemented because
>>> >>>> >>> >>>> there
>>> >>>> >>> >>>> will
>>> >>>> >>> >>>> have
>>> >>>> >>> >>>> to be a check for every ugen called within an instrument.
>>> >>>> >>> >>>> But
>>> >>>> >>> >>>> still I
>>> >>>> >>> >>>> think
>>> >>>> >>> >>>> the difference in performance between debug and no debug
>>> >>>> >>> >>>> will not
>>> >>>> >>> >>>> be
>>> >>>> >>> >>>> as
>>> >>>> >>> >>>> large as it is for C.
>>> >>>> >>> >>>>
>>> >>>> >>> >>>> Cheers,
>>> >>>> >>> >>>> Andrés
>>> >>>> >>> >>>>
>>> >>>> >>> >>>>
>>> >>>> >>> >>>>
>>> >>>> >>> >>>> On Fri, Apr 11, 2014 at 1:21 PM, Rory Walsh
>>> >>>> >>> >>>>
>>> >>>> >>> >>>> wrote:
>>> >>>> >>> >>>>>
>>> >>>> >>> >>>>> Sorry for the noise! I'm properly checked out now and
>>> >>>> >>> >>>>> enjoying
>>> >>>> >>> >>>>> the
>>> >>>> >>> >>>>> ride! This is great. Are there any performance costs if no
>>> >>>> >>> >>>>> breakpoint
>>> >>>> >>> >>>>> is set?
>>> >>>> >>> >>>>>
>>> >>>> >>> >>>>> On 11 April 2014 09:05, Rory Walsh
>>> >>>> >>> >>>>> wrote:
>>> >>>> >>> >>>>>> I assume that since I am getting no build or linker
>>> >>>> >>> >>>>>> errors that
>>> >>>> >>> >>>>>> there
>>> >>>> >>> >>>>>> is something amiss in my code?
>>> >>>> >>> >>>>>>
>>> >>>> >>> >>>>>> On 11 April 2014 01:51, Rory Walsh
>>> >>>> >>> >>>>>> wrote:
>>> >>>> >>> >>>>>>> No. None at all?
>>> >>>> >>> >>>>>>>
>>> >>>> >>> >>>>>>> On 11 Apr 2014 00:36, "Andres Cabrera"
>>> >>>> >>> >>>>>>>
>>> >>>> >>> >>>>>>> wrote:
>>> >>>> >>> >>>>>>>>
>>> >>>> >>> >>>>>>>> Are you getting build errors?
>>> >>>> >>> >>>>>>>>
>>> >>>> >>> >>>>>>>> Cheers,
>>> >>>> >>> >>>>>>>> Andrés
>>> >>>> >>> >>>>>>>>
>>> >>>> >>> >>>>>>>>
>>> >>>> >>> >>>>>>>> On Thu, Apr 10, 2014 at 4:35 PM, Andres Cabrera
>>> >>>> >>> >>>>>>>>
>>> >>>> >>> >>>>>>>> wrote:
>>> >>>> >>> >>>>>>>>>
>>> >>>> >>> >>>>>>>>> Did you checkout the csdebugger branch for csound and
>>> >>>> >>> >>>>>>>>> run
>>> >>>> >>> >>>>>>>>> cmake
>>> >>>> >>> >>>>>>>>> with
>>> >>>> >>> >>>>>>>>> -DBUILD_DEBUGGER=1?
>>> >>>> >>> >>>>>>>>>
>>> >>>> >>> >>>>>>>>> Cheers,
>>> >>>> >>> >>>>>>>>> Andrés
>>> >>>> >>> >>>>>>>>>
>>> >>>> >>> >>>>>>>>>
>>> >>>> >>> >>>>>>>>> On Thu, Apr 10, 2014 at 4:32 PM, Rory Walsh
>>> >>>> >>> >>>>>>>>>
>>> >>>> >>> >>>>>>>>> wrote:
>>> >>>> >>> >>>>>>>>>>
>>> >>>> >>> >>>>>>>>>> Still no luck I'm afraid. Are you sure my code is ok?
>>> >>>> >>> >>>>>>>>>>
>>> >>>> >>> >>>>>>>>>> On 11 April 2014 00:26, Andres Cabrera
>>> >>>> >>> >>>>>>>>>>
>>> >>>> >>> >>>>>>>>>> wrote:
>>> >>>> >>> >>>>>>>>>>> easier to do:
>>> >>>> >>> >>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>> cmake -DBUILD_DEBUGGER=1
>>> >>>> >>> >>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>> Cheers,
>>> >>>> >>> >>>>>>>>>>> Andrés
>>> >>>> >>> >>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>> On Thu, Apr 10, 2014 at 4:10 PM, Rory Walsh
>>> >>>> >>> >>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>> wrote:
>>> >>>> >>> >>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>> I'm probably adding the wrong lines to
>>> >>>> >>> >>>>>>>>>>>> cmakelists.txt?
>>> >>>> >>> >>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>> set (BUILD_DEBUGGER 1)
>>> >>>> >>> >>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>> Is that right?
>>> >>>> >>> >>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>> On 11 April 2014 00:06, Andres Cabrera
>>> >>>> >>> >>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>> wrote:
>>> >>>> >>> >>>>>>>>>>>>> Yes it would :)
>>> >>>> >>> >>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>> Cheers,
>>> >>>> >>> >>>>>>>>>>>>> Andrés
>>> >>>> >>> >>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>> On Thu, Apr 10, 2014 at 4:02 PM, Rory Walsh
>>> >>>> >>> >>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>> wrote:
>>> >>>> >>> >>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>> It would help if I built with the debugger
>>> >>>> >>> >>>>>>>>>>>>>> enabled :)
>>> >>>> >>> >>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>> On 11 April 2014 00:01, Rory Walsh
>>> >>>> >>> >>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>> wrote:
>>> >>>> >>> >>>>>>>>>>>>>>> I'm using a csd file instead of compiling orcs
>>> >>>> >>> >>>>>>>>>>>>>>> and
>>> >>>> >>> >>>>>>>>>>>>>>> scores,
>>> >>>> >>> >>>>>>>>>>>>>>> is
>>> >>>> >>> >>>>>>>>>>>>>>> this
>>> >>>> >>> >>>>>>>>>>>>>>> allowed? My breakpoint callback is never being
>>> >>>> >>> >>>>>>>>>>>>>>> hit.
>>> >>>> >>> >>>>>>>>>>>>>>> What
>>> >>>> >>> >>>>>>>>>>>>>>> am
>>> >>>> >>> >>>>>>>>>>>>>>> I
>>> >>>> >>> >>>>>>>>>>>>>>> missing?
>>> >>>> >>> >>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>> void brkpt_cb(CSOUND *csound, int line, double
>>> >>>> >>> >>>>>>>>>>>>>>> instr,
>>> >>>> >>> >>>>>>>>>>>>>>> void
>>> >>>> >>> >>>>>>>>>>>>>>> *userdata);
>>> >>>> >>> >>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>> int main(int argc, char *argv[])
>>> >>>> >>> >>>>>>>>>>>>>>> {
>>> >>>> >>> >>>>>>>>>>>>>>> int break_count = 0;
>>> >>>> >>> >>>>>>>>>>>>>>> CSOUND* csound = csoundCreate(NULL);
>>> >>>> >>> >>>>>>>>>>>>>>> csoundCompile(csound,argc,argv);
>>> >>>> >>> >>>>>>>>>>>>>>> csoundStart(csound);
>>> >>>> >>> >>>>>>>>>>>>>>> csoundDebuggerInit(csound);
>>> >>>> >>> >>>>>>>>>>>>>>> csoundSetBreakpointCallback(csound, brkpt_cb,
>>> >>>> >>> >>>>>>>>>>>>>>> (void
>>> >>>> >>> >>>>>>>>>>>>>>> *)
>>> >>>> >>> >>>>>>>>>>>>>>> &break_count);
>>> >>>> >>> >>>>>>>>>>>>>>> csoundSetInstrumentBreakpoint(csound, 1, 0);
>>> >>>> >>> >>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>> while (csoundPerformKsmps(csound)==0);
>>> >>>> >>> >>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>> csoundDebuggerClean(csound);
>>> >>>> >>> >>>>>>>>>>>>>>> csoundDestroy(csound);
>>> >>>> >>> >>>>>>>>>>>>>>> }
>>> >>>> >>> >>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>> //this never gets called.
>>> >>>> >>> >>>>>>>>>>>>>>> void brkpt_cb(CSOUND *csound, int line, double
>>> >>>> >>> >>>>>>>>>>>>>>> instr,
>>> >>>> >>> >>>>>>>>>>>>>>> void
>>> >>>> >>> >>>>>>>>>>>>>>> *userdata)
>>> >>>> >>> >>>>>>>>>>>>>>> {
>>> >>>> >>> >>>>>>>>>>>>>>> int *count = (int *) userdata;
>>> >>>> >>> >>>>>>>>>>>>>>> printf("bkpt line %i instr %f\n", line,
>>> >>>> >>> >>>>>>>>>>>>>>> instr);
>>> >>>> >>> >>>>>>>>>>>>>>> *count = *count + 1;
>>> >>>> >>> >>>>>>>>>>>>>>> };
>>> >>>> >>> >>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>> On 10 April 2014 22:56, Rory Walsh
>>> >>>> >>> >>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>> wrote:
>>> >>>> >>> >>>>>>>>>>>>>>>> That's great. Thanks.
>>> >>>> >>> >>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>> On 10 Apr 2014 22:44, "Andres Cabrera"
>>> >>>> >>> >>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>> wrote:
>>> >>>> >>> >>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>> Currently only instrument breakpoints are
>>> >>>> >>> >>>>>>>>>>>>>>>>> implemented...
>>> >>>> >>> >>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>> Cheers,
>>> >>>> >>> >>>>>>>>>>>>>>>>> Andrés
>>> >>>> >>> >>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>> On Thu, Apr 10, 2014 at 2:35 PM, Rory Walsh
>>> >>>> >>> >>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>> wrote:
>>> >>>> >>> >>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>> Ok, that sounds good. To help get my head
>>> >>>> >>> >>>>>>>>>>>>>>>>>> around
>>> >>>> >>> >>>>>>>>>>>>>>>>>> this I
>>> >>>> >>> >>>>>>>>>>>>>>>>>> might
>>> >>>> >>> >>>>>>>>>>>>>>>>>> try
>>> >>>> >>> >>>>>>>>>>>>>>>>>> to
>>> >>>> >>> >>>>>>>>>>>>>>>>>> write a simple command line app that passes a
>>> >>>> >>> >>>>>>>>>>>>>>>>>> breakpoint
>>> >>>> >>> >>>>>>>>>>>>>>>>>> line
>>> >>>> >>> >>>>>>>>>>>>>>>>>> number
>>> >>>> >>> >>>>>>>>>>>>>>>>>> as a parameter, and then when it hits, it
>>> >>>> >>> >>>>>>>>>>>>>>>>>> will
>>> >>>> >>> >>>>>>>>>>>>>>>>>> print
>>> >>>> >>> >>>>>>>>>>>>>>>>>> out
>>> >>>> >>> >>>>>>>>>>>>>>>>>> the
>>> >>>> >>> >>>>>>>>>>>>>>>>>> values
>>> >>>> >>> >>>>>>>>>>>>>>>>>> of
>>> >>>> >>> >>>>>>>>>>>>>>>>>> each variable in that instrument. That would
>>> >>>> >>> >>>>>>>>>>>>>>>>>> be a
>>> >>>> >>> >>>>>>>>>>>>>>>>>> start.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>> On 10 April 2014 22:29, Andres Cabrera
>>> >>>> >>> >>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>> wrote:
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> Not exactly.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> the function:
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> csoundDebugGetInstrument(csound);
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> Gives you a pointer to the currently active
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> instrument
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> (where
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> debugger
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> interrupted execution). You can then get the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> information
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> about
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> instrument instance (variables and time
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> counters,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> p-fields,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> etc.)
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> from
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> it.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> The callback function is only called if a
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> breakpoint
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> is
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> reached,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> which
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> is
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> checked inside csound's kperf function.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> There is a
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> linked
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> list
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> of
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> breakpoints (that is managed in a
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> thread-safe
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> way),
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> which
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> is
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> traversed
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> to
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> check if the current instrument matches a
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> breakpoint.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> For
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> line
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> breakpoints,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> what will need to happen is that for every
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> opcode
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> that
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> is
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> executed,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> it
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> is
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> checked whether it matches to a breakpoint
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> line.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> Cheers,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> Andrés
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> On Thu, Apr 10, 2014 at 2:20 PM, Rory Walsh
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> wrote:
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> So you grab the values for all the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> variables in a
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> particular
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> line
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> each
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> time this callback function is hit? Am I
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> reading
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> that
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> right?
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> On 10 April 2014 22:10, Andres Cabrera
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> wrote:
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> Hi,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> My breakpoint callback looks like this:
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> void
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> CsoundEngine::breakpointCallback(CSOUND
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> *csound,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> int
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> line,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> double
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> instr, void *udata)
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> {
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> qDebug() <<"breakpointCallback " <<
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> line <<
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> instr;
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> INSDS *insds =
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> csoundDebugGetInstrument(csound);
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> CsoundEngine *cs = (CsoundEngine *)
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> udata;
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> // Copy variable list
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> CS_VARIABLE *vp =
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> insds->instr->varPool->head;
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> cs->variableMutex.lock();
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> cs->m_varList.clear();
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> while (vp) {
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> if (vp->varName[0] != '#') {
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> QVariantList varDetails;
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> varDetails << vp->varName;
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> if
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> (strcmp(vp->varType->varTypeName,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> "i") ==
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> 0
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> ||
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> strcmp(vp->varType->varTypeName,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> "k")
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> ==
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> 0) {
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> if (vp->memBlock) {
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> varDetails << *((MYFLT
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> *)vp->memBlock);
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> } else {
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> MYFLT *varmem =
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> insds->lclbas
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> +
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> vp->memBlockIndex;
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> varDetails <<
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> QVariant(*varmem);
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> }
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> } else
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> if(strcmp(vp->varType->varTypeName,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> "S")
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> ==
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> 0) {
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> if (vp->memBlock) {
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> varDetails << *((char
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> *)vp->memBlock);
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> } else {
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> char *varmem = (char *)
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> (insds->lclbas +
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> vp->memBlockIndex);
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> varDetails <<
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> QVariant(varmem);
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> }
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> } else if
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> (strcmp(vp->varType->varTypeName,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> "a")
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> ==
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> 0) {
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> if (vp->memBlock) {
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> varDetails << *((MYFLT
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> *)vp->memBlock) <<
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> *((MYFLT
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> *)vp->memBlock + 1)
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> << *((MYFLT
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> *)vp->memBlock +
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> 2)<<
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> *((MYFLT
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> *)vp->memBlock + 3);
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> } else {
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> MYFLT *varmem =
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> insds->lclbas
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> +
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> vp->memBlockIndex;
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> varDetails <<
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> QVariant(*varmem);
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> }
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> } else {
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> varDetails << QVariant();
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> }
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> varDetails <<
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> vp->varType->varTypeName;
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> cs->m_varList << varDetails;
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> }
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> vp = vp->next;
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> }
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> cs->variableMutex.unlock();
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> //Copy active instrument list
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> cs->instrumentMutex.lock();
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> cs->m_instrumentList.clear();
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> INSDS *in = insds;
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> while (in->prvact) {
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> in = in->prvact;
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> }
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> while (in) {
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> QVariantList instance;
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> instance << in->p1;
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> instance << QString("%1
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> %2").arg(in->p2).arg(in->p3);
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> instance << in->kcounter;
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> cs->m_instrumentList << instance;
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> in = in->nxtact;
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> }
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> cs->instrumentMutex.unlock();
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> emit cs->breakpointReached();
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> }
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> And yes you can actually click the pause
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> button
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> and
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> debugger
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> will
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> stop
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> and show you where it is, even if there is
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> no
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> breakpoint
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> there.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> Cheers,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> Andrés
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> On Thu, Apr 10, 2014 at 2:03 PM, Rory
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> Walsh
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> wrote:
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> Thanks. And how would one query the value
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> of a
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> variable
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> once
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> breakpoint is hit? How does one access
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> that
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> information
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> from
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> Csound structure? Btw, your debugger
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> interface
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> in
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> CsounsQT
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> looks
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> really top-class. I could hope to
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> implement
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> anything as
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> professional
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> as that, but I like the idea of being
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> able to
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> stop
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> and
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> query
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> variables
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> on the fly. Is this possible, your
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> screen-shot
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> seems to
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> indicate
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> so?
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> This will be so useful in teaching!
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> On 10 April 2014 21:58, Andres Cabrera
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> wrote:
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> Also, since the breakpoint callback gets
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> CSOUND
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> structure, it
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> can
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> get
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> all of its information from there.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> Cheers,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> Andrés
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 10, 2014 at 1:58 PM, Andres
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> Cabrera
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> wrote:
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> Hi Rory,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> Essentially, your application could do
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> something
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> like:
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> int break_count = 0;
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> CSOUND* csound = csoundCreate(NULL);
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> csoundCompileOrc(csound, "instr
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> 1\nasig
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> oscil 1,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> p4\nendin\n");
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> csoundInputMessage(csound, "i 1.1 0
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> 1
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> 440");
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> csoundStart(csound);
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> csoundDebuggerInit(csound);
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> csoundSetBreakpointCallback(csound,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> brkpt_cb,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> (void
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> *)
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> &break_count);
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> csoundSetInstrumentBreakpoint(csound, 1.1,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> 0);
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> for (i = 0; i < 1000; i++) {
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> csoundPerformKsmps(csound);
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> }
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> CU_ASSERT(break_count == 1);
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> csoundDebuggerClean(csound);
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> csoundDestroy(csound);
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> Whenever the breakpoint is reached, the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> breakpoint
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> callback
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> is
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> called.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> Currently only instrument breakpoints
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> are
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> implemented
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> (i.e.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> debugger
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> breaks when an instrument is active),
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> but I
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> also
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> want to
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> add
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> line
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> breakpoints.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> Cheers,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> Andrés
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 10, 2014 at 1:49 PM, Rory
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> Walsh
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>> wrote:
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> Wow, this looks super cool Andres. I'm
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> just
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> looking
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> through
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> code
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> now. Do you have a basic example of
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> setting
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> this
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> up?
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> The
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> CUnit
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> stuff
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> in that debugger test code you posted
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> is
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> confusing
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> me.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> On 10 April 2014 21:13, Andres Cabrera
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> wrote:
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> Hi,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> The Csound debugger I'm working on is
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> finally
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> getting
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> to
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> a
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> useful
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> testing
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> stage.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> I've been doing the work in the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> csdebugger
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> branch, if
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> you
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> have
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> time,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> please
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> have a look.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> To build the debugger, you will need
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> to add
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> to
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> cmake:
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> -DBUILD_DEBUGGER=1
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> You will find some simple tests of
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> the API
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> here:
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> https://github.com/csound/csound/blob/csdebugger/tests/c/csound_debugger_test.c
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> I have written a debugger front-end
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> within
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> CsoundQt,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> which
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> you
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> are
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> welcome
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> to try out too:
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> http://qutecsound.sourceforge.net/debugger2.html
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> Some internal details:
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> The debugger interface is found at:
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> https://github.com/csound/csound/blob/csdebugger/include/csdebug.h
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> Although the debugger functions are
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> part of
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> API,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> I
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> think
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> it's
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> cleaner to
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> have them in their own header, as
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> they are
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> also
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> a
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> compile
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> time
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> option.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> Because the changes are somewhat
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> invasive,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> I
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> chose to
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> make
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> kperf
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> function a pointer within the CSOUND
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> struct
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> that
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> defaults to
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> nodebug.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> When
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> the debugger is initialized the kperf
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> function
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> pointer
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> is
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> switched
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> to
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> debug version, and switched back when
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> debugger is
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> disabled
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> csoundDebuggerInit() and
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> csoundDebuggerClean()
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> functions.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> When a breakpoint is reached, a
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> callback
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> function
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> that
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> has
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> been
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> registered
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> with
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> csoundSetBreakpointCallback(CSOUND
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> *csound,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> breakpoint_cb_t
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> bkpt_cb,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> void *userdata) is called.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> When a breakpoint is reached, after
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> callback
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> is
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> called,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> kperf
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> function continues running as usual,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> providing
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> empty
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> buffers
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> to
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> audio
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> hardware, and not incrementing the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> time
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> counters
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> in
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> musmon.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> When
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> a
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> continue
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> is reached, the graph traversing
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> continues
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> where
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> it
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> left
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> off.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> There are probably still a few bugs,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> but
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> it's
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> now
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> working on
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> my
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> simple
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> tests.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> Any ideas, thoughts and suggestions
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> are
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> very
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> welcome.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> Cheers,
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> Andrés
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> ------------------------------------------------------------------------------
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> Put Bad Developers to Shame
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> Dominate Development with Jenkins
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> Continuous
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> Integration
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> Continuously Automate Build, Test &
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> Deployment
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> Start a new project now. Try Jenkins
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> in the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> cloud.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> http://p.sf.net/sfu/13600_Cloudbees
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> _______________________________________________
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> Csound-devel mailing list
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> Csound-devel@lists.sourceforge.net
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/csound-devel
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> ------------------------------------------------------------------------------
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> Put Bad Developers to Shame
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> Dominate Development with Jenkins
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> Continuous
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> Integration
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> Continuously Automate Build, Test &
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> Deployment
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> Start a new project now. Try Jenkins
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> in the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> cloud.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> http://p.sf.net/sfu/13600_Cloudbees
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> _______________________________________________
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> Csound-devel mailing list
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> Csound-devel@lists.sourceforge.net
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/csound-devel
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> ------------------------------------------------------------------------------
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> Put Bad Developers to Shame
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> Dominate Development with Jenkins
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> Continuous
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> Integration
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> Continuously Automate Build, Test &
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> Deployment
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> Start a new project now. Try Jenkins in
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> cloud.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> http://p.sf.net/sfu/13600_Cloudbees
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> _______________________________________________
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> Csound-devel mailing list
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> Csound-devel@lists.sourceforge.net
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/csound-devel
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> ------------------------------------------------------------------------------
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> Put Bad Developers to Shame
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> Dominate Development with Jenkins
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> Continuous
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> Integration
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> Continuously Automate Build, Test &
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> Deployment
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> Start a new project now. Try Jenkins in
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> cloud.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> http://p.sf.net/sfu/13600_Cloudbees
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> _______________________________________________
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> Csound-devel mailing list
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> Csound-devel@lists.sourceforge.net
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/csound-devel
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> ------------------------------------------------------------------------------
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> Put Bad Developers to Shame
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> Dominate Development with Jenkins
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> Continuous
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> Integration
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> Continuously Automate Build, Test &
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> Deployment
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> Start a new project now. Try Jenkins in
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> cloud.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> http://p.sf.net/sfu/13600_Cloudbees
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> _______________________________________________
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> Csound-devel mailing list
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> Csound-devel@lists.sourceforge.net
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/csound-devel
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> ------------------------------------------------------------------------------
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> Put Bad Developers to Shame
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> Dominate Development with Jenkins
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> Continuous
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> Integration
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> Continuously Automate Build, Test &
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> Deployment
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> Start a new project now. Try Jenkins in the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> cloud.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> http://p.sf.net/sfu/13600_Cloudbees
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> _______________________________________________
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> Csound-devel mailing list
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> Csound-devel@lists.sourceforge.net
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/csound-devel
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> ------------------------------------------------------------------------------
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> Put Bad Developers to Shame
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> Dominate Development with Jenkins Continuous
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> Integration
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> Continuously Automate Build, Test &
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> Deployment
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> Start a new project now. Try Jenkins in the
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> cloud.
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> http://p.sf.net/sfu/13600_Cloudbees
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> _______________________________________________
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> Csound-devel mailing list
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> Csound-devel@lists.sourceforge.net
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/csound-devel
>>> >>>> >>> >>>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>> ------------------------------------------------------------------------------
>>> >>>> >>> >>>>>>>>>>>>>>>>>> Put Bad Developers to Shame
>>> >>>> >>> >>>>>>>>>>>>>>>>>> Dominate Development with Jenkins Continuous
>>> >>>> >>> >>>>>>>>>>>>>>>>>> Integration
>>> >>>> >>> >>>>>>>>>>>>>>>>>> Continuously Automate Build, Test &
>>> >>>> >>> >>>>>>>>>>>>>>>>>> Deployment
>>> >>>> >>> >>>>>>>>>>>>>>>>>> Start a new project now. Try Jenkins in the
>>> >>>> >>> >>>>>>>>>>>>>>>>>> cloud.
>>> >>>> >>> >>>>>>>>>>>>>>>>>> http://p.sf.net/sfu/13600_Cloudbees
>>> >>>> >>> >>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>> _______________________________________________
>>> >>>> >>> >>>>>>>>>>>>>>>>>> Csound-devel mailing list
>>> >>>> >>> >>>>>>>>>>>>>>>>>> Csound-devel@lists.sourceforge.net
>>> >>>> >>> >>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/csound-devel
>>> >>>> >>> >>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>> ------------------------------------------------------------------------------
>>> >>>> >>> >>>>>>>>>>>>>>>>> Put Bad Developers to Shame
>>> >>>> >>> >>>>>>>>>>>>>>>>> Dominate Development with Jenkins Continuous
>>> >>>> >>> >>>>>>>>>>>>>>>>> Integration
>>> >>>> >>> >>>>>>>>>>>>>>>>> Continuously Automate Build, Test & Deployment
>>> >>>> >>> >>>>>>>>>>>>>>>>> Start a new project now. Try Jenkins in the
>>> >>>> >>> >>>>>>>>>>>>>>>>> cloud.
>>> >>>> >>> >>>>>>>>>>>>>>>>> http://p.sf.net/sfu/13600_Cloudbees
>>> >>>> >>> >>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>> _______________________________________________
>>> >>>> >>> >>>>>>>>>>>>>>>>> Csound-devel mailing list
>>> >>>> >>> >>>>>>>>>>>>>>>>> Csound-devel@lists.sourceforge.net
>>> >>>> >>> >>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/csound-devel
>>> >>>> >>> >>>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>> ------------------------------------------------------------------------------
>>> >>>> >>> >>>>>>>>>>>>>> Put Bad Developers to Shame
>>> >>>> >>> >>>>>>>>>>>>>> Dominate Development with Jenkins Continuous
>>> >>>> >>> >>>>>>>>>>>>>> Integration
>>> >>>> >>> >>>>>>>>>>>>>> Continuously Automate Build, Test & Deployment
>>> >>>> >>> >>>>>>>>>>>>>> Start a new project now. Try Jenkins in the
>>> >>>> >>> >>>>>>>>>>>>>> cloud.
>>> >>>> >>> >>>>>>>>>>>>>> http://p.sf.net/sfu/13600_Cloudbees
>>> >>>> >>> >>>>>>>>>>>>>> _______________________________________________
>>> >>>> >>> >>>>>>>>>>>>>> Csound-devel mailing list
>>> >>>> >>> >>>>>>>>>>>>>> Csound-devel@lists.sourceforge.net
>>> >>>> >>> >>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/csound-devel
>>> >>>> >>> >>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>> ------------------------------------------------------------------------------
>>> >>>> >>> >>>>>>>>>>>>> Put Bad Developers to Shame
>>> >>>> >>> >>>>>>>>>>>>> Dominate Development with Jenkins Continuous
>>> >>>> >>> >>>>>>>>>>>>> Integration
>>> >>>> >>> >>>>>>>>>>>>> Continuously Automate Build, Test & Deployment
>>> >>>> >>> >>>>>>>>>>>>> Start a new project now. Try Jenkins in the cloud.
>>> >>>> >>> >>>>>>>>>>>>> http://p.sf.net/sfu/13600_Cloudbees
>>> >>>> >>> >>>>>>>>>>>>> _______________________________________________
>>> >>>> >>> >>>>>>>>>>>>> Csound-devel mailing list
>>> >>>> >>> >>>>>>>>>>>>> Csound-devel@lists.sourceforge.net
>>> >>>> >>> >>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/csound-devel
>>> >>>> >>> >>>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>> ------------------------------------------------------------------------------
>>> >>>> >>> >>>>>>>>>>>> Put Bad Developers to Shame
>>> >>>> >>> >>>>>>>>>>>> Dominate Development with Jenkins Continuous
>>> >>>> >>> >>>>>>>>>>>> Integration
>>> >>>> >>> >>>>>>>>>>>> Continuously Automate Build, Test & Deployment
>>> >>>> >>> >>>>>>>>>>>> Start a new project now. Try Jenkins in the cloud.
>>> >>>> >>> >>>>>>>>>>>> http://p.sf.net/sfu/13600_Cloudbees
>>> >>>> >>> >>>>>>>>>>>> _______________________________________________
>>> >>>> >>> >>>>>>>>>>>> Csound-devel mailing list
>>> >>>> >>> >>>>>>>>>>>> Csound-devel@lists.sourceforge.net
>>> >>>> >>> >>>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/csound-devel
>>> >>>> >>> >>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>> ------------------------------------------------------------------------------
>>> >>>> >>> >>>>>>>>>>> Put Bad Developers to Shame
>>> >>>> >>> >>>>>>>>>>> Dominate Development with Jenkins Continuous
>>> >>>> >>> >>>>>>>>>>> Integration
>>> >>>> >>> >>>>>>>>>>> Continuously Automate Build, Test & Deployment
>>> >>>> >>> >>>>>>>>>>> Start a new project now. Try Jenkins in the cloud.
>>> >>>> >>> >>>>>>>>>>> http://p.sf.net/sfu/13600_Cloudbees
>>> >>>> >>> >>>>>>>>>>> _______________________________________________
>>> >>>> >>> >>>>>>>>>>> Csound-devel mailing list
>>> >>>> >>> >>>>>>>>>>> Csound-devel@lists.sourceforge.net
>>> >>>> >>> >>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/csound-devel
>>> >>>> >>> >>>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>
>>> >>>> >>> >>>>>>>>>>
>>> >>>> >>> >>>>>>>>>> ------------------------------------------------------------------------------
>>> >>>> >>> >>>>>>>>>> Put Bad Developers to Shame
>>> >>>> >>> >>>>>>>>>> Dominate Development with Jenkins Continuous
>>> >>>> >>> >>>>>>>>>> Integration
>>> >>>> >>> >>>>>>>>>> Continuously Automate Build, Test & Deployment
>>> >>>> >>> >>>>>>>>>> Start a new project now. Try Jenkins in the cloud.
>>> >>>> >>> >>>>>>>>>> http://p.sf.net/sfu/13600_Cloudbees
>>> >>>> >>> >>>>>>>>>> _______________________________________________
>>> >>>> >>> >>>>>>>>>> Csound-devel mailing list
>>> >>>> >>> >>>>>>>>>> Csound-devel@lists.sourceforge.net
>>> >>>> >>> >>>>>>>>>>
>>> >>>> >>> >>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/csound-devel
>>> >>>> >>> >>>>>>>>>
>>> >>>> >>> >>>>>>>>>
>>> >>>> >>> >>>>>>>>
>>> >>>> >>> >>>>>>>>
>>> >>>> >>> >>>>>>>>
>>> >>>> >>> >>>>>>>>
>>> >>>> >>> >>>>>>>>
>>> >>>> >>> >>>>>>>>
>>> >>>> >>> >>>>>>>>
>>> >>>> >>> >>>>>>>> ------------------------------------------------------------------------------
>>> >>>> >>> >>>>>>>> Put Bad Developers to Shame
>>> >>>> >>> >>>>>>>> Dominate Development with Jenkins Continuous
>>> >>>> >>> >>>>>>>> Integration
>>> >>>> >>> >>>>>>>> Continuously Automate Build, Test & Deployment
>>> >>>> >>> >>>>>>>> Start a new project now. Try Jenkins in the cloud.
>>> >>>> >>> >>>>>>>> http://p.sf.net/sfu/13600_Cloudbees
>>> >>>> >>> >>>>>>>> _______________________________________________
>>> >>>> >>> >>>>>>>> Csound-devel mailing list
>>> >>>> >>> >>>>>>>> Csound-devel@lists.sourceforge.net
>>> >>>> >>> >>>>>>>>
>>> >>>> >>> >>>>>>>> https://lists.sourceforge.net/lists/listinfo/csound-devel
>>> >>>> >>> >>>>>>>>
>>> >>>> >>> >>>>>>>
>>> >>>> >>> >>>>>
>>> >>>> >>> >>>>>
>>> >>>> >>> >>>>>
>>> >>>> >>> >>>>>
>>> >>>> >>> >>>>>
>>> >>>> >>> >>>>> ------------------------------------------------------------------------------
>>> >>>> >>> >>>>> Put Bad Developers to Shame
>>> >>>> >>> >>>>> Dominate Development with Jenkins Continuous Integration
>>> >>>> >>> >>>>> Continuously Automate Build, Test & Deployment
>>> >>>> >>> >>>>> Start a new project now. Try Jenkins in the cloud.
>>> >>>> >>> >>>>> http://p.sf.net/sfu/13600_Cloudbees
>>> >>>> >>> >>>>> _______________________________________________
>>> >>>> >>> >>>>> Csound-devel mailing list
>>> >>>> >>> >>>>> Csound-devel@lists.sourceforge.net
>>> >>>> >>> >>>>> https://lists.sourceforge.net/lists/listinfo/csound-devel
>>> >>>> >>> >>>>
>>> >>>> >>> >>>>
>>> >>>> >>> >>>>
>>> >>>> >>> >>>>
>>> >>>> >>> >>>>
>>> >>>> >>> >>>>
>>> >>>> >>> >>>> ------------------------------------------------------------------------------
>>> >>>> >>> >>>> Put Bad Developers to Shame
>>> >>>> >>> >>>> Dominate Development with Jenkins Continuous Integration
>>> >>>> >>> >>>> Continuously Automate Build, Test & Deployment
>>> >>>> >>> >>>> Start a new project now. Try Jenkins in the cloud.
>>> >>>> >>> >>>> http://p.sf.net/sfu/13600_Cloudbees
>>> >>>> >>> >>>> _______________________________________________
>>> >>>> >>> >>>> Csound-devel mailing list
>>> >>>> >>> >>>> Csound-devel@lists.sourceforge.net
>>> >>>> >>> >>>> https://lists.sourceforge.net/lists/listinfo/csound-devel
>>> >>>> >>> >>>>
>>> >>>> >>> >
>>> >>>> >>> >
>>> >>>> >>> >
>>> >>>> >>> >
>>> >>>> >>> > ------------------------------------------------------------------------------
>>> >>>> >>> > Put Bad Developers to Shame
>>> >>>> >>> > Dominate Development with Jenkins Continuous Integration
>>> >>>> >>> > Continuously Automate Build, Test & Deployment
>>> >>>> >>> > Start a new project now. Try Jenkins in the cloud.
>>> >>>> >>> > http://p.sf.net/sfu/13600_Cloudbees
>>> >>>> >>> > _______________________________________________
>>> >>>> >>> > Csound-devel mailing list
>>> >>>> >>> > Csound-devel@lists.sourceforge.net
>>> >>>> >>> > https://lists.sourceforge.net/lists/listinfo/csound-devel
>>> >>>> >>> >
>>> >>>> >>>
>>> >>>> >>>
>>> >>>> >>>
>>> >>>> >>>
>>> >>>> >>>
>>> >>>> >>>
>>> >>>> >>> ------------------------------------------------------------------------------
>>> >>>> >>> Put Bad Developers to Shame
>>> >>>> >>> Dominate Development with Jenkins Continuous Integration
>>> >>>> >>> Continuously Automate Build, Test & Deployment
>>> >>>> >>> Start a new project now. Try Jenkins in the cloud.
>>> >>>> >>> http://p.sf.net/sfu/13600_Cloudbees
>>> >>>> >>> _______________________________________________
>>> >>>> >>> Csound-devel mailing list
>>> >>>> >>> Csound-devel@lists.sourceforge.net
>>> >>>> >>> https://lists.sourceforge.net/lists/listinfo/csound-devel
>>> >>>>
>>> >>>>
>>> >>>>
>>> >>>> ------------------------------------------------------------------------------
>>> >>>> Put Bad Developers to Shame
>>> >>>> Dominate Development with Jenkins Continuous Integration
>>> >>>> Continuously Automate Build, Test & Deployment
>>> >>>> Start a new project now. Try Jenkins in the cloud.
>>> >>>> http://p.sf.net/sfu/13600_Cloudbees
>>> >>>> _______________________________________________
>>> >>>> Csound-devel mailing list
>>> >>>> Csound-devel@lists.sourceforge.net
>>> >>>> https://lists.sourceforge.net/lists/listinfo/csound-devel
>>> >>>
>>> >>>
>>> >>>
>>> >>>
>>> >>> ------------------------------------------------------------------------------
>>> >>> Put Bad Developers to Shame
>>> >>> Dominate Development with Jenkins Continuous Integration
>>> >>> Continuously Automate Build, Test & Deployment
>>> >>> Start a new project now. Try Jenkins in the cloud.
>>> >>> http://p.sf.net/sfu/13600_Cloudbees
>>> >>> _______________________________________________
>>> >>> Csound-devel mailing list
>>> >>> Csound-devel@lists.sourceforge.net
>>> >>> https://lists.sourceforge.net/lists/listinfo/csound-devel
>>> >>>
>>> >>
>>> >>
>>> >> ------------------------------------------------------------------------------
>>> >> Put Bad Developers to Shame
>>> >> Dominate Development with Jenkins Continuous Integration
>>> >> Continuously Automate Build, Test & Deployment
>>> >> Start a new project now. Try Jenkins in the cloud.
>>> >> http://p.sf.net/sfu/13600_Cloudbees
>>> >> _______________________________________________
>>> >> Csound-devel mailing list
>>> >> Csound-devel@lists.sourceforge.net
>>> >> https://lists.sourceforge.net/lists/listinfo/csound-devel
>>> >
>>> >
>>> > ------------------------------------------------------------------------------
>>> > Put Bad Developers to Shame
>>> > Dominate Development with Jenkins Continuous Integration
>>> > Continuously Automate Build, Test & Deployment
>>> > Start a new project now. Try Jenkins in the cloud.
>>> > http://p.sf.net/sfu/13600_Cloudbees
>>> > _______________________________________________
>>> > Csound-devel mailing list
>>> > Csound-devel@lists.sourceforge.net
>>> > https://lists.sourceforge.net/lists/listinfo/csound-devel
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> Learn Graph Databases - Download FREE O'Reilly Book
>>> "Graph Databases" is the definitive new guide to graph databases and
>>> their
>>> applications. Written by three acclaimed leaders in the field,
>>> this first edition is now available. Download your free book today!
>>> http://p.sf.net/sfu/NeoTech
>>> _______________________________________________
>>> Csound-devel mailing list
>>> Csound-devel@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/csound-devel
>>
>>
>
>
> ------------------------------------------------------------------------------
> Learn Graph Databases - Download FREE O'Reilly Book
> "Graph Databases" is the definitive new guide to graph databases and their
> applications. Written by three acclaimed leaders in the field,
> this first edition is now available. Download your free book today!
> http://p.sf.net/sfu/NeoTech
> _______________________________________________
> Csound-devel mailing list
> Csound-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/csound-devel
>
------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
_______________________________________________
Csound-devel mailing list
Csound-devel@lists.sourceforge.net
https://lists. |