Csound Csound-dev Csound-tekno Search About

[Csnd] Re: Re: Re: CSound (Python) API & Output Buffers

Date2008-04-03 12:53
From"Michael Gogins"
Subject[Csnd] Re: Re: Re: CSound (Python) API & Output Buffers
Did you try getSpout()?

Regards,
Mike

----- Original Message ----- 
From: "Lilith Bryant" 
To: 
Sent: Thursday, April 03, 2008 5:47 AM
Subject: [Csnd] Re: Re: CSound (Python) API & Output Buffers


> for my own work, rewinding the score is not a problem. i'm not trying to 
> do
> realtime output at all.  i just want to render independant chunks of
> dynamically created score,  without having to reload the orchestra for 
> every
> single chunk.
>
> i don't use the performance thread stuff at all, i simply render (in my 
> own
> python thread) by loading up a bunch of notes with csoundScoreEvent, and 
> then
> calling csoundPerformBuffer until i have the required amount of output.
>
> so the structural facilites of csound are currently suitable for me.  its
> probably more of a python issue that i can't get the output buffer data 
> out
> of csound in an efficient form.
>
> one or two simple C/SWIG functions would solve all my issues.
>
> On Thursday 03 April 2008 18:27, Steven Yi wrote:
>> 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"
>
>
> Send bugs reports to this list.
> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe 
> csound"