Csound Csound-dev Csound-tekno Search About

[Csnd] Re: Urgent help required: is there a maximum performance duration?

Date2008-04-14 23:41
Fromvictor
Subject[Csnd] Re: Urgent help required: is there a maximum performance duration?
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
>
>
>
> 
> 
>
> 


Date2008-04-14 23:54
FromRichard Bowers
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"
>
>