Csound Csound-dev Csound-tekno Search About

Re: [Csnd] fout

Date2021-10-12 13:00
FromEnrico Francioni <00000005323c8739-dmarc-request@LISTSERV.HEANET.IE>
SubjectRe: [Csnd] fout
I tried the csd with Richard's modification and now it seems to work fine.
How can I remove the zeroes after the comma in the digit that is inside the text file state.txt?

E

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

Date2021-10-12 15:05
FromRichard Knight
SubjectRe: [Csnd] fout
Hi

I don't think that's possible in the way I modified it, as the fouti 
opcode writes a number, and it is always as floating point, so has 
decimal places. However, it would be fine when read back into Csound and 
used to form the next filename with sprintf.

If you do really need the state.txt file to have the number without 
decimal places, then the fprints opcode would be ideal but as Joachim 
discovered, it appends rather than overwriting - so you would need to 
use the approach in his example using the system_i opcode, but then that 
is operating system dependent (the example doesn't work under windows)

I think changing
   Scmd sprintf "printf %d > state.txt", giFilNum
to
   Scmd sprintf "echo %d > state.txt", giFilNum
might be more cross-platform friendly though.

On 2021-10-12 13:00, Enrico Francioni wrote:
> I tried the csd with Richard's modification and now it seems to work 
> fine.
> How can I remove the zeroes after the comma in the digit that is
> inside the text file state.txt?
> 

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

Date2021-10-12 15:12
Fromjoachim heintz
SubjectRe: [Csnd] fout
just to note that i used echo first, but then there is a new line by 
default, and this caused an error in readfi, and to get rid of the 
newline i am not sure about the different versions of shells and 
operating sytems ...

we should definitely bring fprint(k)s to overwriting ... but how to do 
it without breaking older code?  perhaps an option as last argument?


On 12/10/2021 16:05, Richard Knight wrote:
> Hi
> 
> I don't think that's possible in the way I modified it, as the fouti 
> opcode writes a number, and it is always as floating point, so has 
> decimal places. However, it would be fine when read back into Csound and 
> used to form the next filename with sprintf.
> 
> If you do really need the state.txt file to have the number without 
> decimal places, then the fprints opcode would be ideal but as Joachim 
> discovered, it appends rather than overwriting - so you would need to 
> use the approach in his example using the system_i opcode, but then that 
> is operating system dependent (the example doesn't work under windows)
> 
> I think changing
>    Scmd sprintf "printf %d > state.txt", giFilNum
> to
>    Scmd sprintf "echo %d > state.txt", giFilNum
> might be more cross-platform friendly though.
> 
> On 2021-10-12 13:00, Enrico Francioni wrote:
>> I tried the csd with Richard's modification and now it seems to work 
>> fine.
>> How can I remove the zeroes after the comma in the digit that is
>> inside the text file state.txt?
>>
> 
> 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

Date2021-10-12 15:37
FromRichard Knight
SubjectRe: [Csnd] fout
Good point, didn't think about newline.

I did wonder about that (make it so fprint(k)s could overwrite). As they 
have an indeterminate number of value arguments, I think the best 
convention would be to create new opcodes, eg fprints2 and fprintks2 
which would overwrite instead of append.

On 2021-10-12 15:12, joachim heintz wrote:
> just to note that i used echo first, but then there is a new line by
> default, and this caused an error in readfi, and to get rid of the
> newline i am not sure about the different versions of shells and
> operating sytems ...
> 
> we should definitely bring fprint(k)s to overwriting ... but how to do
> it without breaking older code?  perhaps an option as last argument?
> 
> 
> On 12/10/2021 16:05, Richard Knight wrote:
>> Hi
>> 
>> I don't think that's possible in the way I modified it, as the fouti 
>> opcode writes a number, and it is always as floating point, so has 
>> decimal places. However, it would be fine when read back into Csound 
>> and used to form the next filename with sprintf.
>> 
>> If you do really need the state.txt file to have the number without 
>> decimal places, then the fprints opcode would be ideal but as Joachim 
>> discovered, it appends rather than overwriting - so you would need to 
>> use the approach in his example using the system_i opcode, but then 
>> that is operating system dependent (the example doesn't work under 
>> windows)
>> 
>> I think changing
>>    Scmd sprintf "printf %d > state.txt", giFilNum
>> to
>>    Scmd sprintf "echo %d > state.txt", giFilNum
>> might be more cross-platform friendly though.
>> 
>> On 2021-10-12 13:00, Enrico Francioni wrote:
>>> I tried the csd with Richard's modification and now it seems to work 
>>> fine.
>>> How can I remove the zeroes after the comma in the digit that is
>>> inside the text file state.txt?
>>> 
>> 
>> 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

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

Date2021-10-12 16:18
Fromjoachim heintz
SubjectRe: [Csnd] fout
yes makes sense.  i'd say: let fprint(k)s2 have an optional argument 
which decides whether to overwrite or to append.


On 12/10/2021 16:37, Richard Knight wrote:
> Good point, didn't think about newline.
> 
> I did wonder about that (make it so fprint(k)s could overwrite). As they 
> have an indeterminate number of value arguments, I think the best 
> convention would be to create new opcodes, eg fprints2 and fprintks2 
> which would overwrite instead of append.
> 
> On 2021-10-12 15:12, joachim heintz wrote:
>> just to note that i used echo first, but then there is a new line by
>> default, and this caused an error in readfi, and to get rid of the
>> newline i am not sure about the different versions of shells and
>> operating sytems ...
>>
>> we should definitely bring fprint(k)s to overwriting ... but how to do
>> it without breaking older code?  perhaps an option as last argument?
>>
>>
>> On 12/10/2021 16:05, Richard Knight wrote:
>>> Hi
>>>
>>> I don't think that's possible in the way I modified it, as the fouti 
>>> opcode writes a number, and it is always as floating point, so has 
>>> decimal places. However, it would be fine when read back into Csound 
>>> and used to form the next filename with sprintf.
>>>
>>> If you do really need the state.txt file to have the number without 
>>> decimal places, then the fprints opcode would be ideal but as Joachim 
>>> discovered, it appends rather than overwriting - so you would need to 
>>> use the approach in his example using the system_i opcode, but then 
>>> that is operating system dependent (the example doesn't work under 
>>> windows)
>>>
>>> I think changing
>>>    Scmd sprintf "printf %d > state.txt", giFilNum
>>> to
>>>    Scmd sprintf "echo %d > state.txt", giFilNum
>>> might be more cross-platform friendly though.
>>>
>>> On 2021-10-12 13:00, Enrico Francioni wrote:
>>>> I tried the csd with Richard's modification and now it seems to work 
>>>> fine.
>>>> How can I remove the zeroes after the comma in the digit that is
>>>> inside the text file state.txt?
>>>>
>>>
>>> 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
> 
> 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

Date2021-10-12 17:41
FromRichard Knight
SubjectRe: [Csnd] fout
Sounds good. So maybe the last fixed argument eg:
   fprints2 "filename", "string", ioverwrite, [, ival1] [, ival2] [...]

(where ioverwrite is 0=append (current behaviour) or 1=overwrite)

I will have a look at the source over the next week or so and see if I 
can come up with something working to propose, unless you/someone else 
beats me to it...


On 2021-10-12 16:18, joachim heintz wrote:
> yes makes sense.  i'd say: let fprint(k)s2 have an optional argument
> which decides whether to overwrite or to append.
> 

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

Date2021-10-12 18:11
Fromjoachim heintz
SubjectRe: [Csnd] fout
great --- a pull request would certainly be a wonderful result of this 
discussion.  i like your arguments; i personally would prefer this order:
	fprints2 "filename", ioverwrite, "string", [, ival1] [, ival2] [...]


On 12/10/2021 18:41, Richard Knight wrote:
> Sounds good. So maybe the last fixed argument eg:
>    fprints2 "filename", "string", ioverwrite, [, ival1] [, ival2] [...]
> 
> (where ioverwrite is 0=append (current behaviour) or 1=overwrite)
> 
> I will have a look at the source over the next week or so and see if I 
> can come up with something working to propose, unless you/someone else 
> beats me to it...
> 
> 
> On 2021-10-12 16:18, joachim heintz wrote:
>> yes makes sense.  i'd say: let fprint(k)s2 have an optional argument
>> which decides whether to overwrite or to append.
>>
> 
> 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

Date2021-10-12 18:59
From"Dr. Richard Boulanger"
SubjectRe: [Csnd] fout
Wouldn't it be nice to have an fout2 opcode that named the files based on time and date?

Dr. Richard Boulanger
Professor
Electronic Production and Design
Berklee College of Music

> On Oct 12, 2021, at 1:14 PM, joachim heintz  wrote:
> 
> great --- a pull request would certainly be a wonderful result of this discussion.  i like your arguments; i personally would prefer this order:
>    fprints2 "filename", ioverwrite, "string", [, ival1] [, ival2] [...]
> 
> 
>> On 12/10/2021 18:41, Richard Knight wrote:
>> Sounds good. So maybe the last fixed argument eg:
>>   fprints2 "filename", "string", ioverwrite, [, ival1] [, ival2] [...]
>> (where ioverwrite is 0=append (current behaviour) or 1=overwrite)
>> I will have a look at the source over the next week or so and see if I can come up with something working to propose, unless you/someone else beats me to it...
>>> On 2021-10-12 16:18, joachim heintz wrote:
>>> yes makes sense.  i'd say: let fprint(k)s2 have an optional argument
>>> which decides whether to overwrite or to append.
>>> 
>> Csound mailing list
>> Csound@listserv.heanet.ie
>> https://us-west-2.protection.sophos.com?d=heanet.ie&u=aHR0cHM6Ly9saXN0c2Vydi5oZWFuZXQuaWUvY2dpLWJpbi93YT9BMD1DU09VTkQ=&i=NWYxNzBkMDNiNTVmZGEwZmIyNjczYmRm&t=WVZMRlI4dlFUVUZ6V2NTOUU5eE9lZnFIemtoc2hxYlBDMFFCWmtKZzhzRT0=&h=791f1d79352c469c82d94df1fd531ff2
>> Send bugs reports to
>>        https://us-west-2.protection.sophos.com?d=github.com&u=aHR0cHM6Ly9naXRodWIuY29tL2Nzb3VuZC9jc291bmQvaXNzdWVz&i=NWYxNzBkMDNiNTVmZGEwZmIyNjczYmRm&t=YlNrQ2lLclRLZUpGUE1iR0FyY2M1eW1NTUU5SUozWlJwMTNZU2NXT1BLOD0=&h=791f1d79352c469c82d94df1fd531ff2
>> Discussions of bugs and features can be posted here
> 
> Csound mailing list
> Csound@listserv.heanet.ie
> https://us-west-2.protection.sophos.com?d=heanet.ie&u=aHR0cHM6Ly9saXN0c2Vydi5oZWFuZXQuaWUvY2dpLWJpbi93YT9BMD1DU09VTkQ=&i=NWYxNzBkMDNiNTVmZGEwZmIyNjczYmRm&t=WVZMRlI4dlFUVUZ6V2NTOUU5eE9lZnFIemtoc2hxYlBDMFFCWmtKZzhzRT0=&h=791f1d79352c469c82d94df1fd531ff2
> Send bugs reports to
>       https://us-west-2.protection.sophos.com?d=github.com&u=aHR0cHM6Ly9naXRodWIuY29tL2Nzb3VuZC9jc291bmQvaXNzdWVz&i=NWYxNzBkMDNiNTVmZGEwZmIyNjczYmRm&t=YlNrQ2lLclRLZUpGUE1iR0FyY2M1eW1NTUU5SUozWlJwMTNZU2NXT1BLOD0=&h=791f1d79352c469c82d94df1fd531ff2
> 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

Date2021-10-13 15:47
FromRichard Knight
SubjectRe: [Csnd] fout
OK, I'm convinced! I would prefer this order too.

On 2021-10-12 18:11, joachim heintz wrote:
> great --- a pull request would certainly be a wonderful result of this
> discussion.  i like your arguments; i personally would prefer this
> order:
> 	fprints2 "filename", ioverwrite, "string", [, ival1] [, ival2] [...]
> 
> 

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

Date2021-10-13 15:53
FromRichard Knight
SubjectRe: [Csnd] fout
That would be useful but the exact date format might be contentious - I 
suppose the obvious date format would be the same as the "dates" opcode.

"dates" uses the underlying C function ctime and always returns in the 
format
Www Mmm dd hh:mm:ss yyyy
(eg Wed Oct 13 15:34:37 2021)

The main issue with that is that colon isn't valid in files on all 
platforms (definitely not valid in Windows).
John's example to reformat it could be used but then also I suppose 
there are quite a few taste/locale differences in date formatting. My 
personal inclination would be to use ISO dates (ie YYYY-MM-DD hh:mm:ss) 
but then without colons I think it becomes a personal preference what 
the separator is.
However just highlights taste/locale specifics so might be hard to reach 
a consensus on the 'correct' date format but if we could that would be 
great.

Also/instead, I'd propose an additional modification to "dates" that 
could be used to format a timestamp from the "date" opcode in an 
arbitrary format using the strftime convention. Eg then that could be 
used in a one-liner for fout:

   fout dates(date(), "%Y%m%d_%H%M%S.wav"), 14, aout

then that would write a file in my personal preferred timestamp, and one 
would not need to use the current output of "dates" and then do various 
strsubs on it to extract the format desired.

(I don't think strings can be optional arguments so my proposed tweak to 
"dates" would need to be dates2 or just strftime for backwards 
compatability)

On 2021-10-12 18:59, Dr. Richard Boulanger wrote:
> Wouldn't it be nice to have an fout2 opcode that named the files based
> on time and date?
> 
> Dr. Richard Boulanger
> Professor
> Electronic Production and Design
> Berklee College of Music

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