Classes | Scheduling>Clocks

# SystemClock : Clock : Object

Clock running on separate accurately timed thread
Source: Clock.sc
See also: AppClock, TempoClock

## Description

SystemClock is more accurate than AppClock, but cannot call GUI primitives.

See Clock for general explanation of how clocks operate.

## Class Methods

### SystemClock.sched(delta, item)

The float you return specifies the delta to resched the function for. Returning nil will stop the task from being rescheduled.

    (
    SystemClock.sched(0.0,{ arg time;
        time.postln;
        rrand(0.1,0.9);
    });
    )

    (
    SystemClock.sched(2.0,{
        "2.0 seconds later".postln;
        nil;
    });
    )

### SystemClock.clear

Clear the SystemClock's scheduler to stop it.

    SystemClock.clear;

### SystemClock.schedAbs(time, item)

    (
    SystemClock.schedAbs( (thisThread.seconds + 4.0).round(1.0),{ arg time;
        ("the time is exactly " ++ time.asString
            ++ " seconds since starting SuperCollider").postln;
    });
    )

### SystemClock.play(task)

From superclass: Clock

Calls to the GUI may not be made directly from actions triggered by SystemClock or incoming socket messages (OSCFunc).

To get around this, use `{ }.defer`. This will execute the function using the AppClock and is equivalent to `AppClock.sched(0, function)`

    (
    var w, r;
    w = Window.new("trem", Rect(512, 256, 360, 130));
    w.front;
    r = Routine({ arg time;
        60.do({ arg i;
            0.05.yield;
            {
                w.bounds = w.bounds.moveBy(10.rand2, 10.rand2);
                w.alpha = cos(i*0.1pi)*0.5+0.5;
            }.defer;
        });
        1.yield;
        w.close;
    });
    SystemClock.play(r);
    )

This example is only to show how to make calls to Cocoa/GUI when scheduling with the SystemClock. If you only wish to control the GUI, use AppClock.

### Inherited class methods

## Instance Methods

### Inherited instance methods

helpfile source: /Applications/SuperCollider.app/Contents/Resources/HelpSource/Classes/SystemClock.schelp
link::Classes/SystemClock::