Csound Csound-dev Csound-tekno Search About

[Csnd] Re: Re: Re: Re: Accessing the api from mzscheme using ffi - no swig involved

Date2008-02-16 20:22
Fromvictor
Subject[Csnd] Re: Re: Re: Re: Accessing the api from mzscheme using ffi - no swig involved
Or on the other hand, if  you are calling Csound::InputMessage() instead
of CsoundPerformanceThread::InputMessage(), two threads might be
accesssing the same area of memory and causing the crash.

The latter should be used, but it's very easy to get the two confused
or forget to use the correct one.

Victor

----- Original Message ----- 
From: "victor" 
To: 
Sent: Saturday, February 16, 2008 8:15 PM
Subject: [Csnd] Re: Re: Re: Accessing the api from mzscheme using ffi - no 
swig involved


> Is that CsoundPerformanceThread::InputMessage() ? If so, it might
> be the way that class queues event. There might be an upper limit
> for it.
>
> Victor
> ----- Original Message ----- 
> From: "Cesare Marilungo" 
> To: 
> Sent: Saturday, February 16, 2008 7:38 PM
> Subject: [Csnd] Re: Re: Accessing the api from mzscheme using ffi - no 
> swig involved
>
>
>> I'm having some problems when populating the score using 
>> csoundInputMessage. Basically if I add more than ~2000 events in this 
>> way, it segfaults.
>>
>> I've made some tests using python and the csnd module with the same 
>> amount of events and it works without problems.
>>
>> I'll make some tests using the api in the same way from plain c to see 
>> what happens.
>>
>> Best,
>>
>> -c.
>>
>> victor wrote:
>>> Looks like the lisp CFFI, which I am told also works...
>>> ----- Original Message ----- From: "Cesare Marilungo" 
>>> 
>>> To: 
>>> Sent: Sunday, February 03, 2008 4:26 PM
>>> Subject: [Csnd] Accessing the api from mzscheme using ffi - no swig 
>>> involved
>>>
>>>
>>>> DISCLAIMER: I've just started learning scheme, let alone the mzscheme 
>>>> foreign function facilities. But it works!
>>>>
>>>> (require (lib "foreign.ss"))
>>>> (unsafe!)
>>>>
>>>> (file-stream-buffer-mode (current-output-port) 'line)
>>>>
>>>> (define libcsound (ffi-lib "libcsound"))
>>>>
>>>> (define CSOUND
>>>>    (make-ctype _pointer #f #f))
>>>>
>>>> (define csoundCreate
>>>>    (get-ffi-obj "csoundCreate" libcsound (_fun _int -> CSOUND)))
>>>>
>>>> (define csoundCompile
>>>>    (get-ffi-obj "csoundCompile" libcsound (_fun CSOUND _int _cvector -> 
>>>> _int)))
>>>>
>>>> (define csoundInputMessage
>>>>    (get-ffi-obj "csoundInputMessage" libcsound (_fun CSOUND _string -> 
>>>> _void)))
>>>>
>>>> (define csoundPerformKsmps
>>>>    (get-ffi-obj "csoundPerformKsmps" libcsound (_fun CSOUND -> _int)))
>>>>
>>>> (define csoundDestroy
>>>>    (get-ffi-obj "csoundDestroy" libcsound (_fun CSOUND -> _void)))
>>>>
>>>> (define comm (list->cvector '("csound" "template.csd") _string))
>>>>
>>>> (define cs (csoundCreate 0))
>>>>
>>>> (define (csloop)
>>>>    (if (= (csoundPerformKsmps cs) 0) (csloop)))
>>>>
>>>> (csoundCompile cs 2 comm)
>>>>
>>>> (csoundInputMessage cs "i1 0 20 7.00 15000")
>>>>
>>>> (csloop)
>>>> (csoundDestroy cs)
>>>> (exit)
>>>>
>>>> Best,
>>>>
>>>> -c.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> -- 
>>>> www.cesaremarilungo.com
>>>>
>>>>
>>>> Send bugs reports to this list.
>>>> To unsubscribe, send email sympa@lists.bath.ac.uk with body 
>>>> "unsubscribe csound"
>>>
>>>
>>>
>>> Send bugs reports to this list.
>>> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe 
>>> csound"
>>>
>>>
>>
>>
>> -- 
>> www.cesaremarilungo.com
>>
>>
>> Send bugs reports to this list.
>> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe 
>> csound"
>
>
>
> Send bugs reports to this list.
> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe 
> csound" 


Date2008-02-16 23:01
FromCesare Marilungo
Subject[Csnd] Re: Re: Re: Re: Re: Accessing the api from mzscheme using ffi - no swig involved
victor wrote:
> Or on the other hand, if  you are calling Csound::InputMessage() instead
> of CsoundPerformanceThread::InputMessage(), two threads might be
> accesssing the same area of memory and causing the crash.
>
> The latter should be used, but it's very easy to get the two confused
> or forget to use the correct one.
>
> Victor

This makes sense. In fact from python I'm using the latter.

With the code below (from MzScheme) I'm calling:

PUBLIC void csoundInputMessage(CSOUND *, const char *message);

But then, what is this for?

Also, I call csoundInputMessage in a straight sequence and then I call 
csoundPerformKsmps. I have also tried to put a long delay before calling 
the loop with csoundPerformKsmps inside. It segfaults as soon as 
csoundPerformKsmps is called. It seems related to the number of events.

Best,

-c.

>
> ----- Original Message ----- From: "victor" 
> To: 
> Sent: Saturday, February 16, 2008 8:15 PM
> Subject: [Csnd] Re: Re: Re: Accessing the api from mzscheme using ffi 
> - no swig involved
>
>
>> Is that CsoundPerformanceThread::InputMessage() ? If so, it might
>> be the way that class queues event. There might be an upper limit
>> for it.
>>
>> Victor
>> ----- Original Message ----- From: "Cesare Marilungo" 
>> 
>> To: 
>> Sent: Saturday, February 16, 2008 7:38 PM
>> Subject: [Csnd] Re: Re: Accessing the api from mzscheme using ffi - 
>> no swig involved
>>
>>
>>> I'm having some problems when populating the score using 
>>> csoundInputMessage. Basically if I add more than ~2000 events in 
>>> this way, it segfaults.
>>>
>>> I've made some tests using python and the csnd module with the same 
>>> amount of events and it works without problems.
>>>
>>> I'll make some tests using the api in the same way from plain c to 
>>> see what happens.
>>>
>>> Best,
>>>
>>> -c.
>>>
>>> victor wrote:
>>>> Looks like the lisp CFFI, which I am told also works...
>>>> ----- Original Message ----- From: "Cesare Marilungo" 
>>>> 
>>>> To: 
>>>> Sent: Sunday, February 03, 2008 4:26 PM
>>>> Subject: [Csnd] Accessing the api from mzscheme using ffi - no swig 
>>>> involved
>>>>
>>>>
>>>>> DISCLAIMER: I've just started learning scheme, let alone the 
>>>>> mzscheme foreign function facilities. But it works!
>>>>>
>>>>> (require (lib "foreign.ss"))
>>>>> (unsafe!)
>>>>>
>>>>> (file-stream-buffer-mode (current-output-port) 'line)
>>>>>
>>>>> (define libcsound (ffi-lib "libcsound"))
>>>>>
>>>>> (define CSOUND
>>>>>    (make-ctype _pointer #f #f))
>>>>>
>>>>> (define csoundCreate
>>>>>    (get-ffi-obj "csoundCreate" libcsound (_fun _int -> CSOUND)))
>>>>>
>>>>> (define csoundCompile
>>>>>    (get-ffi-obj "csoundCompile" libcsound (_fun CSOUND _int 
>>>>> _cvector -> _int)))
>>>>>
>>>>> (define csoundInputMessage
>>>>>    (get-ffi-obj "csoundInputMessage" libcsound (_fun CSOUND 
>>>>> _string -> _void)))
>>>>>
>>>>> (define csoundPerformKsmps
>>>>>    (get-ffi-obj "csoundPerformKsmps" libcsound (_fun CSOUND -> 
>>>>> _int)))
>>>>>
>>>>> (define csoundDestroy
>>>>>    (get-ffi-obj "csoundDestroy" libcsound (_fun CSOUND -> _void)))
>>>>>
>>>>> (define comm (list->cvector '("csound" "template.csd") _string))
>>>>>
>>>>> (define cs (csoundCreate 0))
>>>>>
>>>>> (define (csloop)
>>>>>    (if (= (csoundPerformKsmps cs) 0) (csloop)))
>>>>>
>>>>> (csoundCompile cs 2 comm)
>>>>>
>>>>> (csoundInputMessage cs "i1 0 20 7.00 15000")
>>>>>
>>>>> (csloop)
>>>>> (csoundDestroy cs)
>>>>> (exit)
>>>>>
>>>>> Best,
>>>>>
>>>>> -c.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> -- 
>>>>> www.cesaremarilungo.com
>>>>>
>>>>>
>>>>> Send bugs reports to this list.
>>>>> To unsubscribe, send email sympa@lists.bath.ac.uk with body 
>>>>> "unsubscribe csound"
>>>>
>>>>
>>>>
>>>> Send bugs reports to this list.
>>>> To unsubscribe, send email sympa@lists.bath.ac.uk with body 
>>>> "unsubscribe csound"
>>>>
>>>>
>>>
>>>
>>> -- 
>>> www.cesaremarilungo.com
>>>
>>>
>>> Send bugs reports to this list.
>>> To unsubscribe, send email sympa@lists.bath.ac.uk with body 
>>> "unsubscribe csound"
>>
>>
>>
>> Send bugs reports to this list.
>> To unsubscribe, send email sympa@lists.bath.ac.uk with body 
>> "unsubscribe csound" 
>
>
>
> Send bugs reports to this list.
> To unsubscribe, send email sympa@lists.bath.ac.uk with body 
> "unsubscribe csound"
>
>


-- 
www.cesaremarilungo.com