首页 > 学院 > 开发设计 > 正文

ChucK初步(2)

2019-11-14 09:58:01
字体:
来源:转载
供稿:网友

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 commentint 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 variable5 => 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
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表