ChucK
From Seo Wiki - Search Engine Optimization and Programming Languages
File:ChucK logo2.jpg | |
Paradigm | Multi-paradigm |
---|---|
Appeared in | 2003 |
Designed by | Ge Wang and Perry R. Cook |
Typing discipline | strong, static |
OS | Cross-platform |
License | GNU General Public License |
Website | http://chuck.cs.princeton.edu/ |
This article needs additional citations for verification. Please help improve this article by adding reliable references. Unsourced material may be challenged and removed. (May 2008) </td> </tr> </table>
For other uses, see Chuck.
ChucK is a concurrent, strongly timed audio programming language for real-time synthesis, composition, and performance, which runs on Mac OS X, Linux, and Microsoft Windows. It is designed to favor readability and flexibility for the programmer over other considerations such as raw performance. It natively supports deterministic concurrency and multiple, simultaneous, dynamic control rates. Another key feature is the ability to add, remove, and modify code on the fly, while the program is running, without stopping or restarting. It has a highly precise timing/concurrency model, allowing for arbitrarily fine granularity. It offers composers and researchers a powerful and flexible programming tool for building and experimenting with complex audio synthesis programs, and real-time interactive control. Distributed under the terms of the GNU General Public License, ChucK is free software.
Language features
Current limitationsThe ChucK programming language lacks some features that are common in programming languages. Such features include:
Code exampleThe following is a simple ChucK program that generates sound and music: // our signal graph (patch) SinOsc s => JCRev r => dac; // set gain .2 => s.gain; // set dry/wet mix .1 => r.mix; // an array of pitch classes (in half steps) [ 0, 2, 4, 7, 9, 11 ] @=> int hi[]; // infinite time loop while( true ) { // choose a note, shift registers, convert to frequency Std.mtof( 45 + Std.rand2(0,3) * 12 + hi[Std.rand2(0,hi.cap()-1)] ) => s.freq; // advance time by 120 ms 120::ms => now; }
See alsoReferences
External links
|
↓