[chuck-users] print absolute time in chuck

Chiel ten Brinke ctenbrinke at gmail.com
Mon May 9 04:58:46 EDT 2016


Thanks for the pointers. I've been looking into it.

I'm currently hitting a wall though with developing a simple chugin. It
seems that loading* any manually compiled chugins* immediately result in a
segmentation fault.
I'm using Visual Studio 2015 on windows 7. Is this any known problem?


Here's a more detailed case:

Source file (compiles fine):

#include "chuck_dl.h"
#include "chuck_def.h"

#include <stdio.h>
#include <limits.h>
#include <stdlib.h>
#include <math.h>


CK_DLL_SFUN(systemtime_getFreq);

t_CKFLOAT getFreq() { return 4.0; }

CK_DLL_QUERY(SystemTime)
{
    QUERY->setname(QUERY, "SystemTime");

    QUERY->begin_class(QUERY, "SystemTime", "Object");
    QUERY->doc_class(QUERY, "System time support");

    QUERY->add_sfun(QUERY, systemtime_getFreq, "float", "freq");
    QUERY->doc_func(QUERY, "Oscillator frequency [Hz]. ");

    QUERY->end_class(QUERY);

    return TRUE;
}


CK_DLL_SFUN(systemtime_getFreq)
{
    RETURN->v_float = getFreq();
}


Command to run:

$ cd chugins/Debug
$ chuck --chugin-path:. --chugin:SystemTime ../SystemTime/SystemTime-test.ck
Segmentation fault

Where SystemTime-test.ck maybe any trivial chuck script.

You can also view the commit that contains this test code here:
https://github.com/Chiel92/chugins/commit/9d49c0713ca9918a3e5b71e4a38f84e0ad02e464

On Wed, May 4, 2016 at 10:05 AM, Iain Emsley <iain.emsley at kellogg.ox.ac.uk>
wrote:

> Hi  Chiel,
>
> The Github for the Chugging is here:
> https://github.com/ccrma/chugins
>
> and the extension part of the ChucK site has some notes:
> http://chuck.stanford.edu/extend/
>
> There is a paper describing the extension system here:
> https://ccrma.stanford.edu/~spencer/publications/CCC2012.pdf
>
> The chuginate code in the repo may provide some additional notes as well
> in the code comments.
>
> Kind regards,
>
> Iain
>
> Iain Emsley
>
> Research Associate
> Oxford e-Research Centre
> University of Oxford
>
>
>
>
> On 4 May 2016, at 08:12, Chiel ten Brinke <ctenbrinke at gmail.com> wrote:
>
> Is there a place where this stuff is documented? I can't find anything
> about it on the website http://chuck.cs.princeton.edu/doc/program/
>
> On Wed, May 4, 2016 at 2:19 AM, Spencer Salazar <
> spencer at ccrma.stanford.edu> wrote:
>
>> I think the best way to do this is with a chugin. If you know any C++ it
>> would be very easy to write a chugin that simply wraps C time() or whatever
>> OS-dependent function gives you time in milliseconds or nanoseconds.
>>
>> Time in programming languages is a surprisingly complex topic (see e.g.
>> [1]); the design of ChucK's now concept (in my opinion, smartly) has no
>> external notion of time, avoiding these issues. Putting this in a chugin
>> would make it a lot easier to grow to the appropriate level of complexity.
>>
>> spencer
>>
>> [1]
>> http://infiniteundo.com/post/25326999628/falsehoods-programmers-believe-about-time
>>
>>
>> On Tue, May 3, 2016 at 1:33 AM, Chiel ten Brinke <ctenbrinke at gmail.com>
>> wrote:
>>
>>> The problem with this approach, though, is that it apparently takes a
>>> few seconds before the input is processed and the internal chuck timer
>>> starts counting.
>>> This results in that the times printed by the suggested code always is a
>>> few seconds too early. This makes this approach not quite useful for
>>> tracking down latency problems.
>>>
>>> Is there a way around this caveat, or are there other approaches to
>>> print full time?
>>>
>>> On Tue, May 3, 2016 at 9:54 AM, Chiel ten Brinke <ctenbrinke at gmail.com>
>>> wrote:
>>>
>>>> Here is an improvement over the provided script:
>>>>
>>>> class FullTimeHack
>>>> {
>>>>     int minutes;
>>>>     int seconds;
>>>>
>>>>     // PRECONSTRUCTOR
>>>>
>>>>     string datetime;
>>>>     ConsoleInput stdin;     // gonna read from here
>>>>     stdin.prompt("") => now; // wait until something comes in
>>>>     while (stdin.more())  {  stdin.getLine() => datetime;  } // read
>>>> input
>>>>     //<<< datetime >>>;
>>>>     Std.atoi(datetime.substring(10, 2)) => minutes;
>>>>     Std.atoi(datetime.substring(13, 2)) => seconds;
>>>>     <<< minutes + ":" + seconds >>>;
>>>>
>>>>
>>>>     fun void print_full_time()
>>>>     {
>>>>         (seconds + now/second) % 60 => float new_seconds;
>>>>         (minutes + now/minute) $ int % 60 => int new_minutes;
>>>>         <<< new_minutes + ":" + new_seconds >>>;
>>>>     }
>>>>
>>>> }
>>>>
>>>> FullTimeHack hack;
>>>> hack.print_full_time();
>>>>
>>>>
>>>>
>>>> On Mon, May 2, 2016 at 6:11 PM, Chiel ten Brinke <ctenbrinke at gmail.com>
>>>> wrote:
>>>>
>>>>> Thanks for you response. I'm gonna try that out right away,
>>>>>
>>>>> By the way, wouldn't it be nice if this could be done more easily?
>>>>> Especially since ChucK is really into all the timey wimey stuff :)
>>>>>
>>>>>
>>>>> On Mon, May 2, 2016 at 10:56 AM, Gonzalo <gonzalo at dense13.com> wrote:
>>>>>
>>>>>> I had a similar problem a while ago, Perry Cook suggested this, it
>>>>>> might be of help:
>>>>>>
>>>>>> One way to do it would be to pass it in
>>>>>> as an argument or other when you run ChucK.
>>>>>> This example uses stdin to read the output
>>>>>> of a <date> command in the shell:
>>>>>>
>>>>>> // TestDate.ck  Perry R. Cook, Dec. 2014
>>>>>> ConsoleInput stdin;     // gonna read from here
>>>>>> stdin.prompt("") => now; // wait until something comes in
>>>>>> string datetime; // date and time
>>>>>> string datetimenow; // plus time since chuck invoked tacked on
>>>>>> while (stdin.more())  {  stdin.getLine() => datetime;  } // read input
>>>>>> datetime.setCharAt(9,'-'); // replace time string colons
>>>>>> datetime.setCharAt(12,'-'); // with dashes instead
>>>>>> datetime+"-"+Std.ftoa(now/second,4) => datetimenow; // tack on time
>>>>>> since chuck invoked
>>>>>> <<< datetimenow >>>;
>>>>>> // If you want to continue making updated unique
>>>>>> // strings, just keep redoing the datetimenow line
>>>>>> 1.5*second => now;
>>>>>> datetime+"-"+Std.ftoa(now/second,4) => datetimenow; // tack on time
>>>>>> since chuck invoked
>>>>>> <<< datetimenow >>>;
>>>>>>
>>>>>> To use this:
>>>>>>
>>>>>> date +"%m%d%y-%T" | chuck TestDate.ck
>>>>>>
>>>>>> Outputs (date-H-M-S-now):
>>>>>>
>>>>>> "120614-15-00-09-0.0000" : (string)
>>>>>> "120614-15-00-09-1.5000" : (string)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On 2/05/2016 9:53 AM, Chiel ten Brinke wrote:
>>>>>>
>>>>>>> I would like to figure out the source of latency from chuck
>>>>>>> interacting
>>>>>>> with another application via OSC. To do that, I want to print
>>>>>>> timestamps
>>>>>>> of messages sent and received and compare these.
>>>>>>> But here's the thing:
>>>>>>>
>>>>>>> How do I print the absolute current time in chuck? The variable `now`
>>>>>>> only seems to hold the time from the start of the process.
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> chuck-users mailing list
>>>>>>> chuck-users at lists.cs.princeton.edu
>>>>>>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>>>>>>>
>>>>>>>
>>>>>> --
>>>>>> http://dense13.com
>>>>>> http://www.whole-play.com
>>>>>> https://www.30daygroove.com
>>>>>> _______________________________________________
>>>>>> chuck-users mailing list
>>>>>> chuck-users at lists.cs.princeton.edu
>>>>>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>> _______________________________________________
>>> chuck-users mailing list
>>> chuck-users at lists.cs.princeton.edu
>>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>>>
>>>
>>
>>
>> --
>> Spencer Salazar
>> Doctoral Candidate
>> Center for Computer Research in Music and Acoustics
>> Stanford University
>>
>> spencer at ccrma.stanford.edu
>> +1 831.277.4654
>> https://ccrma.stanford.edu/~spencer/
>>
>>
>> _______________________________________________
>> chuck-users mailing list
>> chuck-users at lists.cs.princeton.edu
>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>>
>>
> _______________________________________________
> chuck-users mailing list
> chuck-users at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>
>
>
> _______________________________________________
> chuck-users mailing list
> chuck-users at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cs.princeton.edu/pipermail/chuck-users/attachments/20160509/88d263bd/attachment-0001.html>


More information about the chuck-users mailing list