| Sorry if I am not understanding the question...
But if you put a f0 3600000
you will keep running Csound for that amount of time
and you can just use csoundInputMessage() to send
events as you require.
This is the way to keep csound running almost
indefinitely.
As for sending Csound output out to python, I am
afraid your code is more or less the only way. You
can try to use the libsndfile bindings so you might be able
to pass the floatArray without converting it to a string.
Victor
----- Original Message -----
From: "Steven Yi"
To:
Sent: Thursday, April 03, 2008 6:27 AM
Subject: [Csnd] Re: CSound (Python) API & Output Buffers
> Hi Lilith,
>
> This brings up some bigger issues but ones worth addressing.
> Currently, as far as I know, there is no indefinite playing mode for
> csound. Something like that might be worth putting in so that the
> main kperf thread will just keep running even if there are no active
> score events. If we do that, then we can introduce a
> "csoundClearScore" method that would wipe all score events. That way,
> you wouldn't need to rewind the score or anything, just keep it going
> and call the csoundScoreEvent. Also, this would allow the possibility
> of indefinite running of csound for things like installations.
>
> I have the feeling this has been discussed before a long while back,
> and that there was some kind of complication due to scoreTime. I
> remember Istvan changing it from an int to a long or something like
> that to make the max score time longer. I can not recall all the
> issues though.
>
> Lilith and everyone: Any thoughts on this? Anyone remember any
> threads regarding this kind of thing?
>
> Thanks,
> steven
>
>
> On Wed, Apr 2, 2008 at 8:10 PM, Lilith Bryant wrote:
>> I wonder if I could tap the list here for some advice.
>>
>> I'm writing a score writer front-end in python using the csound API.
>>
>> The big idea with this project, is to be able to quickly change the
>> score and
>> re-render with having csound reload the whole orchestra/csd file for
>> every
>> simple score change. So i'm simply calling the csoundCompile and all
>> the
>> prequisites once at the beginning of my application (or whenever the
>> user
>> asks to reload the orchestra/csd)
>>
>> Then for each renderering, I call csoundScoreRewind and then
>> csoundScoreEvent
>> for each note.
>>
>> Which works as expected, except the output wav file simply grows with
>> easy
>> pass. i.e. it csoundScoreRewind doesn't clear it, like would be useful
>> for
>> this case.
>>
>> Now I can alternatively not use wav file output at all, and use
>> csoundSetHostImplementedAudioIO and manually fish out the samples, and
>> write
>> them to a wav file myself. But this is python and that hideously slow.
>>
>> So the questions are:
>> 1) Is there a way to restart the wav file output without reloading the
>> orchestra/csd?
>>
>> OR
>>
>> 2) Is there a quick way to fish out the output buffer samples into a
>> python
>> string or array, for writing out to file using the python wav module?
>>
>> The best i have so far is something like:
>>
>> ob=csnd.csoundGetOutputBuffer(self.cs)
>> fa=csnd.floatArray.frompointer(ob)
>> sa=array.Array('h',[0]*buffersize*2)
>> for n in range(buffersize*2):
>> sa[n]=fa[n]*32767
>> wavdata=sa.tostring()
>>
>> which really SUCKS performance-wise (not surprisingly).
>>
>> I don't want to write a C/SWIG function to do just this, since i want to
>> be
>> able to give this to people who aren't up to running compilers.
>>
>>
>> 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"
|