Re: [Csnd] fout
Date | 2021-10-10 19:15 |
From | Enrico Francioni <00000005323c8739-dmarc-request@LISTSERV.HEANET.IE> |
Subject | Re: [Csnd] fout |
Hi Joachim! What a pleasure to hear from you…! Your patch works, thanks! Now I wonder if it was also possible to make sure that, after generating some audio files with fout, after closing the frontend (in my case CsoundQt), in a subsequent work session the audio files - always generated with fout - can be saved starting from the numbering immediately following the last file previously generated. This will avoid overwriting the new files generated in new work sessions, on the previous audio files created. Enrico Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here |
Date | 2021-10-10 19:53 |
From | john |
Subject | Re: [Csnd] fout |
There are a number of ways of achieving this depending on how automated you desire it to be. If you know when your program has finished you can write a file defining a csound macro which records the number and you can define with either a #include or a CLI csound call defining a macro. More automate methods include writing a C program (or whatever you refer) to scan the directory and extract the highest version number. On Sun, 10 Oct 2021, Enrico Francioni wrote: > Hi Joachim! > > What a pleasure to hear from you…! > > Your patch works, thanks! > > Now I wonder if it was also possible to make sure that, after generating some audio files with fout, after closing the frontend (in my case CsoundQt), in a subsequent work session the audio files - always generated with fout - can be saved starting from the numbering immediately following the last file previously generated. > This will avoid overwriting the new files generated in new work sessions, on the previous audio files created. > Enrico > > Csound mailing list > Csound@listserv.heanet.ie > https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND > Send bugs reports to > https://github.com/csound/csound/issues > Discussions of bugs and features can be posted here > Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here |
Date | 2021-10-10 20:05 |
From | Rory Walsh |
Subject | Re: [Csnd] fout |
Apologies if this has already been suggested, but you can also use the date opcode to generate a unique file name each time. On Sun, 10 Oct 2021 at 19:54, john <jpff@codemist.co.uk> wrote: There are a number of ways of achieving this depending on how automated |
Date | 2021-10-10 20:09 |
From | Tarmo Johannes |
Subject | Re: [Csnd] fout |
And - as you mentioned CsoundQt - if you use the Record button in CsoundQt, an unique index will be added to the file name automatically. Tarmo P, 10. oktoober 2021 22:05 Rory Walsh <rorywalsh@ear.ie> kirjutas:
|
Date | 2021-10-10 20:35 |
From | john |
Subject | Re: [Csnd] fout |
In deed. The example for dates opcode in the manual does just that and ows how using substr one can get usr-non-hostile names. On Sun, 10 Oct 2021, Rory Walsh wrote: > Apologies if this has already been suggested, but you can also use the date > opcode to generate a unique file name each time. > > On Sun, 10 Oct 2021 at 19:54, john |
Date | 2021-10-10 20:40 |
From | "Dr. Richard Boulanger" |
Subject | Re: [Csnd] fout |
excellent. i know the manual. and I know the opcodes, but not all of them by a mile. - cool - Dr.B Dr. Richard Boulanger Professor Electronic Production and Design Berklee College of Music Professional Writing & Technology Division On Sun, Oct 10, 2021 at 3:35 PM john <jpff@codemist.co.uk> wrote: In deed. The example for dates opcode in the manual does just that and |
Date | 2021-10-10 20:49 |
From | joachim heintz |
Subject | Re: [Csnd] fout |
hi enrico - i think this is one of the possible solutions which john mentioned. it looks for a file "state.txt" in the working directory. if not found, it will be created. if found, it will continue where it was left. instr Init if filevalid("state.txt") == 1 then State, iline readfi "state.txt" giFilNum = strtod(State) prints "File 'state.txt' read. Continuing with file counter %d.\n", giFilNum else puts "File 'state.txt' created, starting with 1.", 1 fprints("state.txt","1") giFilNum = 1 endif endin instr Record S_filename sprintf "Out_REC_%02d.wav", giFilNum giFilNum += 1 Scmd sprintf "printf %d > state.txt", giFilNum ires system_i 1, Scmd ;fprints("state.txt","%d",giFilNum) fout S_filename, 18, poscil:a(.2,random:i(400,800)) endin and score e.g. i "Init" 0 0 i "Record" 0 1 i . 1 1 rather than using the system_i opcode i would prefer to use fprints. but this always appends the string to the file content, and i could not figure out how just to replace the content. i don't know whether there is a hidden option in fprints, or any other opcode to do it. joachim On 10/10/2021 20:15, Enrico Francioni wrote: > Hi Joachim! > > What a pleasure to hear from you…! > > Your patch works, thanks! > > Now I wonder if it was also possible to make sure that, after generating some audio files with fout, after closing the frontend (in my case CsoundQt), in a subsequent work session the audio files - always generated with fout - can be saved starting from the numbering immediately following the last file previously generated. > This will avoid overwriting the new files generated in new work sessions, on the previous audio files created. > Enrico > > Csound mailing list > Csound@listserv.heanet.ie > https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND > Send bugs reports to > https://github.com/csound/csound/issues > Discussions of bugs and features can be posted here > Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here |
Date | 2021-10-11 00:41 |
From | Richard Knight |
Subject | Re: [Csnd] fout |
Hmm, fprints overwrites the existing file for me and a quick look at the source suggests the file is always opened in "w" so I think the intended behaviour is to overwrite. https://github.com/csound/csound/blob/develop/Opcodes/fout.c#L1298 On 2021-10-10 20:49, joachim heintz wrote: > rather than using the system_i opcode i would prefer to use fprints. > but this always appends the string to the file content, and i could > not figure out how just to replace the content. i don't know whether > there is a hidden option in fprints, or any other opcode to do it. > > joachim > Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here |
Date | 2021-10-11 16:23 |
From | joachim heintz |
Subject | Re: [Csnd] fout |
thanks for looking in the code. for me, the result of this is definitely "1234", not "4": indx = 1 istart = 0 while indx < 5 do schedule(1,istart,0,indx) istart += 1 indx += 1 od instr 1 fprints "test.txt", "%d", p4 endin j On 11/10/2021 01:41, Richard Knight wrote: > Hmm, fprints overwrites the existing file for me and a quick look at the > source suggests the file is always opened in "w" so I think the intended > behaviour is to overwrite. > https://github.com/csound/csound/blob/develop/Opcodes/fout.c#L1298 > > On 2021-10-10 20:49, joachim heintz wrote: > >> rather than using the system_i opcode i would prefer to use fprints. >> but this always appends the string to the file content, and i could >> not figure out how just to replace the content. i don't know whether >> there is a hidden option in fprints, or any other opcode to do it. >> >> joachim >> > > Csound mailing list > Csound@listserv.heanet.ie > https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND > Send bugs reports to > https://github.com/csound/csound/issues > Discussions of bugs and features can be posted here Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here |
Date | 2021-10-11 19:42 |
From | Richard Knight |
Subject | Re: [Csnd] fout |
Actually, I was wrong, and I can't recreate what I originally said now... I had a further look and it seems that fprints and fprintks keep the file open, so a subsequent call will use the existing open file and hence append. It seems that writing strings will always append to the file, but fiopen/ficlose could be used to overwrite a state file with a number and then retrieve it with fini. I had a play around with your example to try it: gStateFile = "state.txt" giFilNum init 0 opcode WriteState, 0, 0 ihandle fiopen gStateFile, 0 fouti ihandle, 0, 0, giFilNum ficlose ihandle endop instr Init if filevalid(gStateFile) == 1 then fini gStateFile, 0, 0, giFilNum prints "File 'state.txt' read. Continuing with file counter %d.\n", giFilNum else puts "File 'state.txt' created, starting with 1.", 1 giFilNum = 1 WriteState endif endin instr Record S_filename sprintf "Out_REC_%02d.wav", giFilNum giFilNum += 1 WriteState fout S_filename, 18, poscil:a(.2,random:i(400,800)) endin On 2021-10-11 16:23, joachim heintz wrote: > thanks for looking in the code. for me, the result of this is > definitely "1234", not "4": > > indx = 1 > istart = 0 > while indx < 5 do > schedule(1,istart,0,indx) > istart += 1 > indx += 1 > od > instr 1 > fprints "test.txt", "%d", p4 > endin > > j > > Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here |