ChucK初步(2)

Overview

ChucK is a strongly-typed, strongly-timed, concurrent(并发的) audio and multimedia(多媒体的) programming language. It is compiled(编译) into virtual(虚拟的) instructions, which is immediately run in the ChucK Virtual Machine. This guide documents the features(特色) of the Language, Compiler, and Virtual Machine for a ChucK programmer.

running ChucK

…this is a quick overview(综述), see VM options for a more complete guide to command line options.

To run ChucK with a program/patch called foo.ck simply run chuck and then the name of the file:

chuck foo.ck 

To run ChucK with multiple patches concurrently(同时发生) (or the same one multiple times):

chuck foo.ck bar.ck bar.ck boo.ck 

…the following probes(探查) the audio system and prints out all available audio devices and MIDI devices. You may then refer to them (by number usually) from the command line or from your program. (again, see VM Options for a complete list)

chuck --probe 

ChucK can be run in a different terminal as a host/listener that patches may be sent to. The server should invoke(调用) the –loop flag to specify that the virtual machine should not halt(停止) automatically(自动地) (when the current programs exit).

chuck --loop     

(See the guide to On-the-fly Programming for more information)

If a ChucK listener is running, we can (from a second terminal) send a program/patch to the listener by using the + command line option:

chuck + foo.ck 

Similarly, you can use - and = to remove/replace a patch in the listener, and use ^ to find out the status. Again, see On-the-fly Programming for more information.

To run most of the code or examples in this language specification, you only need to use the basic chuck program.

comments(注释)

(Note: block comments cannot be nested(嵌入的))

// this is a comment
int foo; // another comment

/* 
   this is a block comment
   still going...
*/

debug print(调试输出)

…we have provided a debug print syntax(语法):

// prints out value of expression
<<< expression >>>;

This will print the values and types of any expressions placed within them. This debug print construction may be placed around any non-declaration expression ( non l-value ) and will not affect the execution(执行) of the code. Expressions which represent an object will print the value of that object’s reference(引用) address:

// assign 5 to a newly declared variable
5 => int i;
// prints "5 : (int)"
<<<i>>>;

// prints "hello! : (string)"
<<<"hello!">>>; //prints "hello! : (string)"

// prints "3.5 : (float)"
<<<1.0 + 2.5 >>> => float x;

(ChucK中似乎是没有了print这一类)
(Chuck中有;,还是类似C的)

For more formatted(格式化) data output(输出), a comma-separated list of expressions will print only their respective(分别的) values (with one space between):

//接上段
// prints "the value of x is 3.5" (x from above)
<<<"the value of x is" , x >>>;

// prints "4 + 5 is 9"
<<<"4 + 5 is", 4 + 5>>>;

// prints "here are 3 random numbers ? ? ?"
<<<"here are 3 random numbers", 
    Std.rand2(0,9), 
    Std.rand2(0,9),
    Std.rand2(0,9) >>>; 

输出:
C:\Users\abc1\Desktop>chuck “debug print.ck”
5 :(int)
“hello!” : (string)
3.500000 :(float)
the value of x is 3.500000
4 + 5 is 9
here are 3 random numbers 1 8 8

reserved words(关键字)

(primitive types原始类型)
    int
    float
    time
    dur
    void
    same (unimplemented未实现的) 

(control structures)
    if
    else
    while
    until
    for
    repeat
    break
    continue
    return
    switch (unimplemented) 

(class keywords)
    class
    extends
    public
    static
    pure
    this
    super (unimplemented)
    interface (unimplemented)
    implements (unimplemented)
    protected (unimplemented)
    private (unimplemented) 

(other chuck keywords)
    function
    fun
    spork
    const
    new 

(special values)
    now
    true
    false
    maybe
    null
    NULL
    me
    pi 

(special : default durations(默认持续时间))
    samp
    ms
    second
    minute
    hour
    day
    week 

(special : global ugens(不理解))
    dac
    adc
    blackhole 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值