| Thanks v. much, Victor. I'll run this by the technical bods at the
University - they would know Python and be able to implement your
suggestion.
--Richard.
victor wrote:
> Another way I thought would be to get Python to recompile your
> CSD every so often and restart playing. This way, csound is ensured
> to have a reset now and then. This is the script:
>
> from csnd import *
> cs = Csound()
> while(True):
> the_end = cs.Compile("mysemieternal.csd")
> while(not the_end): the_end = cs.PerformBuffer()
> cs.Reset()
>
> I am using PerformBuffer() to reduce the number of python function
> calls per sample. You can set the csound score to run for say 24 hours,
> and it will be fresh every day...
>
> Victor
>
> ----- Original Message ----- From: "Richard Bowers"
>
> To:
> Sent: Monday, April 14, 2008 11:54 PM
> Subject: [Csnd] Re: Re: Urgent help required: is there a maximum
> performance duration?
>
>
>> Thanks, Victor. I really should get to know and understand Python
>> because everyone seems to be using it. For now, I'll make do with a
>> 46 day stretch and turn up occasionally to reboot ;) Anyway, I'll
>> report back if anything weird happens over that 46 day period - like
>> the computer melts or starts speaking fluent Urdu or something.
>>
>> Best,
>> Richard.
>>
>> victor wrote:
>>> Yes, I think we can consider this behaviour a bug.
>>> But one simple solution is to use a Python script:
>>>
>>> from csnd import *
>>>
>>> cs = Csound()
>>> cs.Compile("myeternal.csd")
>>>
>>> while(True):
>>> ignore = cs.PerformKsmps()
>>>
>>> Call it eternal.py and run
>>>
>>>> python eternal.py
>>>
>>> This will play your CSD forever, at least if you have a score line
>>> like:
>>>
>>> i1 0 -1
>>>
>>> somewhere, as in
>>>
>>>
>>>
>>> -odac -b1024 -d
>>>
>>>
>>> instr 1
>>> karp randh 100, 2.4
>>> asig vco2 10000, 440+karp
>>> out asig
>>> endin
>>>
>>>
>>> i1 0 -1
>>>
>>>
>>>
>>> Victor
>>>
>>> ----- Original Message ----- From: "Richard Bowers"
>>>
>>> To:
>>> Sent: Monday, April 14, 2008 10:39 PM
>>> Subject: [Csnd] Urgent help required: is there a maximum performance
>>> duration?
>>>
>>>
>>>> I am running CSound v. 5.0 on XP and would like to set the instrument
>>>> duration (and f0 duration) such that it would run for the duration of
>>>> two exhibitions - in one case 30 days and in another 4 months.
>>>>
>>>> When I put a high number of seconds in (12960000) the program hangs. I
>>>> can access other programs, such as this email client, but the CSound
>>>> session in the console just sticks and produces no sound.
>>>>
>>>> I've also tried
>>>> f0 -1
>>>> with
>>>> i1 0 -1
>>>>
>>>> I attach the csd file (it won't run, of course, because of the missing
>>>> files) but someone may be able to identify a reason.
>>>>
>>>> Help would be greatly appreciated as I am installing this on
>>>> Wednesday.
>>>>
>>>> --Richard.
>>>>
>>>>
>>>> Send bugs reports to this list.
>>>> To unsubscribe, send email sympa@lists.bath.ac.uk with body
>>>> "unsubscribe csound"
>>>
>>>
>>> --------------------------------------------------------------------------------
>>>
>>>
>>>
>>>
>>>> ; experiments with RMS to ascertain levels;
>>>> ; detects power levels throughout ilistendur and calculates average
>>>>
>>>>
>>>>
>>>> ;version for university
>>>> ; -+I14 -+P14
>>>>
>>>> ;-o dac 7 -i adc 6 -b 4000 -M0
>>>> -i devaudio6 -o devaudio6 -b800 -M0
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> sr=44100
>>>> kr=441
>>>> ksmps=100
>>>> nchnls=8
>>>> gkrms init 0
>>>> gkrmsmean init 0
>>>> gkmakenoisedur init 3
>>>> gklistendur init 1
>>>> gkswitch init 0
>>>> gkdistance init 0
>>>> gifloor init -40; after high pass filtering 100hz
>>>> gilevel1 init -37
>>>> gilevel2 init -35
>>>> gilevel3 init -25
>>>> gkvol_scale init 1
>>>> gkdB init -40
>>>> gkdBinv init 40
>>>>
>>>> ;*************************************************
>>>> instr 1; LISTENING PATCH
>>>> ; LISTENING SECTION
>>>> kfloor init gifloor
>>>> kpadding=kfloor*.1
>>>> kthresh=gkrmsmean+abs(kpadding)
>>>> printk2 kthresh
>>>> ;asigl, asigr ins
>>>> asigl, asigr diskin "foyer4.wav", 1, 0, 1
>>>> asigl butterhp asigl, 100
>>>> ;outs asigl, asigl
>>>> kblock init 0
>>>> krmsacc init 0
>>>> gkrms rms asigl
>>>> kdB=dbfsamp(gkrms)
>>>> gkdB=kdB
>>>> gkdBinv=abs(kdB)
>>>> ;kmeter=(kdB < kthresh ? 0 : kdB)
>>>>
>>>> ; CREATE SWITCHING MECHANISM
>>>> kphase phasor 1/(gklistendur+gkmakenoisedur)
>>>> gkswitch table kphase, 1, 1; VALUES 0 AND 1: proportion 3 noise 1
>>>> listen
>>>> gkdistance tablei kphase, 70, 1
>>>> printk2 gkswitch
>>>>
>>>> ; WHEN SWITCH = 0 START LISTENING
>>>> if gkswitch == 1 kgoto calc
>>>> ;printk .1, kmeter
>>>> ;krmsacc=gkrms+krmsacc; accumulate the rms values
>>>> krmsacc=kdB+krmsacc; accumulate the dB values
>>>> ;printk 1/ksmps, krmsacc
>>>> kblock=0
>>>> kgoto skip
>>>> calc:
>>>> if kblock=1 kgoto skip
>>>> gkrmsmean=krmsacc/(kr*gklistendur); get the mean rms over one
>>>> ilistendur of listening
>>>> krmsacc=0; reset accumulator to 0
>>>> kblock=1
>>>> skip:
>>>> kfloor = gkrmsmean
>>>> printk2 gkrmsmean
>>>> endin
>>>> ;************************************************
>>>> instr 10
>>>>
>>>> level1:
>>>> if gkrmsmean > gilevel1 kgoto level2
>>>> gkmakenoisedur=17
>>>> gklistendur=gkmakenoisedur/3
>>>> gktranspindex1=.3
>>>> gkspeedindex1=.01
>>>> gkvol_scale=1
>>>> kregion=1
>>>> ;if gkrmsmean > gilevel1 kgoto level2; placed to enable continuous
>>>> running of level1
>>>> kgoto jump
>>>>
>>>> level2:
>>>> if gkrmsmean > gilevel2 kgoto level3
>>>> gkmakenoisedur=11
>>>> gklistendur=gkmakenoisedur/3
>>>> gktranspindex1=.3
>>>> gkspeedindex1=.1
>>>> gkvol_scale=1.5
>>>> kregion=2
>>>>
>>>> kgoto jump
>>>>
>>>> level3:
>>>> if gkrmsmean > gilevel3 kgoto level4
>>>> gkmakenoisedur=7
>>>> gklistendur=gkmakenoisedur/3
>>>> gktranspindex1=1
>>>> gkspeedindex1=1
>>>> gkvol_scale=2
>>>> kregion=3
>>>>
>>>> kgoto jump
>>>>
>>>> level4:
>>>> gkmakenoisedur=5
>>>> gklistendur=gkmakenoisedur/3
>>>> gktranspindex1=1
>>>> gkspeedindex1=10
>>>> gkvol_scale=3
>>>> kregion=4
>>>>
>>>> jump:
>>>> printk2 kregion
>>>> endin
>>>> ;****************************************************************
>>>> instr 30
>>>>
>>>> ktransp=gktranspindex1
>>>> ktransp_mobile=gktranspindex1+(gkdB*.005)
>>>> kspeed=gkspeedindex1
>>>> iseed=2
>>>>
>>>> idur1 filelen "stanza_w01.pvx" ; find dur of wave file
>>>> idur2 filelen "stanza_w02.pvx"
>>>> idur3 filelen "stanza_w03.pvx"
>>>> idur4 filelen "stanza_w04.pvx"
>>>>
>>>> kphase phasor .1
>>>> krandh randh 1, 1, iseed
>>>> krand randi 1, .1, iseed
>>>> krand=abs(krand)
>>>> kshuffle randi idur1*.01*kphase, 10, iseed
>>>>
>>>> kpos1 phasor ((krand/idur1)-abs(kshuffle)*krandh)*kspeed
>>>> kpos2 phasor ((krand/idur2)-abs(kshuffle))*kspeed
>>>> kpos3 phasor (((krand*.3)/idur3)-abs(kshuffle)*krandh)*kspeed
>>>> kpos4 phasor (((krand*.01)/idur4)-abs(kshuffle))*kspeed
>>>>
>>>> kpos1=kpos1*idur1
>>>> kpos2=kpos2*idur2
>>>> kpos3=kpos3*idur3
>>>> kpos4=kpos4*idur4
>>>>
>>>> flivew1 pvsfread kpos1, "stanza_w01.pvx", 0
>>>> flivew2 pvsfread kpos2, "stanza_w02.pvx", 0
>>>> flivew3 pvsfread kpos3, "stanza_w03.pvx", 0
>>>> flivew4 pvsfread kpos4, "stanza_w04.pvx", 0
>>>>
>>>> ; SYNTAX fsig pvsanal ain, ifftsize, ioverlap, iwinsize, iwintype
>>>> [, iformat] [, iinit]
>>>> kf, ka pvspitch flivew1, .05
>>>> if kf>0 then
>>>> klivef=kf
>>>> else
>>>> klivef=klivef
>>>> endif
>>>>
>>>> kbase=100
>>>> kratioa=ktransp;kbase/klivef
>>>> kratiob=ktransp+krand;kbase/klivef
>>>> kratioc=ktransp;kbase/klivef
>>>> kratiod=ktransp_mobile;kbase/klivef
>>>>
>>>> flivew01 pvscale flivew1, kratioa
>>>> flivew02 pvscale flivew2, kratiob
>>>> flivew03 pvscale flivew3, kratioc
>>>> flivew04 pvscale flivew4, kratiod
>>>>
>>>>
>>>> alivewA pvsynth flivew01; whispered
>>>> alivewB pvsynth flivew02; whispered
>>>> alivewC pvsynth flivew03; whispered
>>>> alivewD pvsynth flivew04; whispered
>>>>
>>>>
>>>> ;****************************
>>>> ;SPATIALISATION
>>>> ;Outer speakers receive the reverberated signal only
>>>> ;Inner speakers are dry
>>>> ;+1 on distance prevents 0 NOISE!!
>>>> kreverbsend1=.05
>>>> kdist=((1-gkdistance)*10)+1
>>>> ;kdistance2=10
>>>> kdegree1=20
>>>> aA1, aA2, aA3, aA4 locsig alivewA, kpos1*360, kdist, kreverbsend1
>>>> asendaA1, asendaA2, asendaA3, asendaA4 locsend
>>>>
>>>> aB1, aB2, aB3, aB4 locsig alivewB, (kpos2*360)+90, kdist, kreverbsend1
>>>> asendaB1, asendaB2, asendaB3, asendaB4 locsend
>>>>
>>>> aC1, aC2, aC3, aC4 locsig alivewC, (kpos3*360)+180, kdist,
>>>> kreverbsend1
>>>> asendaC1, asendaC2, asendaC3, asendaC4 locsend
>>>>
>>>> aD1, aD2, aD3, aD4 locsig alivewD, (kpos4*360)+270, kdist,
>>>> kreverbsend1
>>>> asendaD1, asendaD2, asendaD3, asendaD4 locsend
>>>>
>>>>
>>>> achan1=(aA1+aB1+aC1+aD1)*gkvol_scale; dry to channels 1-4
>>>> achan2=(aA2+aB2+aC2+aD2)*gkvol_scale;
>>>> achan3=(aA3+aB3+aC3+aD3)*gkvol_scale;
>>>> achan4=(aA4+aB4+aC4+aD4)*gkvol_scale;
>>>>
>>>> arev5=(asendaA1+asendaB1+asendaC1+asendaD1);*gkvol_scale; wet to
>>>> channels 5-8
>>>> arev6=(asendaA2+asendaB2+asendaC2+asendaD2);*gkvol_scale
>>>> arev7=(asendaA3+asendaB3+asendaC3+asendaD3);*gkvol_scale
>>>> arev8=(asendaA4+asendaB4+asendaC4+asendaD4);*gkvol_scale
>>>>
>>>>
>>>>
>>>>
>>>> ;iatten=.01
>>>> achan5 nreverb arev5*gkdistance, 10, .5;
>>>> achan6 nreverb arev6*gkdistance, 10, .5;
>>>> achan7 nreverb arev7*gkdistance, 10, .5;
>>>> achan8 nreverb arev8*gkdistance, 10, .5;
>>>>
>>>>
>>>> ;outs asenda1+asenda3+asenda5+asenda7, asenda2+asenda4+asenda6+asenda8
>>>> outo achan1, achan2, achan3, achan4, achan5, achan6, achan7, achan8
>>>>
>>>>
>>>> endin
>>>> ;*************************************************
>>>>
>>>> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
>>>>
>>>> ;f0 60000; maintaining realtime performance
>>>> f0 12960000; 150 days
>>>> ;f0 -1
>>>> f 1 0 16 -2 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 ; switching table
>>>> f5 0 4096 9 1 1 90
>>>> f8 0 32 -2 .374 .3964 .42 .445 .472 .5297 .5611 .5945 .6299 .6673
>>>> .707 .7487 .7937 .8409 .8907 .9437 1 1.05946 1.1227 1.1892 1.2599
>>>> 1.3356 1.5 1.5875 1.6819 1.7821 1.8879 2 2.11892 2.245 2.3784
>>>> 2.52 ; FREQUENCY RATIOS FOR TRANSPOSING -16 TO +15
>>>> f9 0 0 -23 "pitches_0-127.txt"
>>>> f50 0 8192 20 2 1; hamming window
>>>> f60 0 2048 10 1; sine
>>>> f70 0 2048 -27 0 0 100 1 1500 1 1600 0 2047 0; envelope for
>>>> makenoise/listen used for distance
>>>> f6000 0 16 -2 0.015625 .03125 .0625 .125 .25 .5 1 1 2 4 8 16 32 32
>>>> 64 128; table of transpositions
>>>>
>>>>
>>>>
>>>> ;i1 0 60000; listening
>>>> i1 0 12960000
>>>> ;i1 0 -1
>>>>
>>>> ;i10 0 60000; selecting
>>>> i10 0 12960000
>>>> ;i10 0 -1
>>>>
>>>> ;i30 0 60000; phase vocoding
>>>> i30 0 12960000
>>>> ;i30 0 -1
>>>>
>>>> e
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>> 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"
>
>
|