-
Notifications
You must be signed in to change notification settings - Fork 1
audio language based on Lua, inspired by ChucK
License
alltom/ckv
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
-- -- ckv -- -- an audio language based on Lua, -- inspired by ChucK -- -- http://ckvlang.org/ -- -- Primary Author: -- Tom Lieber tom@alltom.com -- -- -- INSTALL: -- -- detailed installation instructions are in the tutorial: -- http://ckvlang.org/tutorial.html -- -- but for advanced users, this is all you need to know: -- -- Dependencies: -- LUA: download, build, and "make install" -- http://www.lua.org/ -- -- FFMPEG: download, build, and "make install" -- http://ffmpeg.org/ -- -- ckv: -- $ make -- $ ./ckv -h -- $ ./ckv README # this file is an executable example! -- $ ./ckv ex/01.ckv -- $ ./ckv ex/02.ckv -- $ ./ckv ex/03.ckv ex/03a.ckv ex/03b.ckv -- $ ./ckv ex/04.ckv -- EXECUTABLE SUMMARY (run this file) -- create audio generators in ckv! -- OOP in Lua is kind of weird, but simple: -- http://lua-users.org/wiki/ObjectOrientedProgramming function Noise(gain) return { gain = gain or 1.0, tick = function(self) self.last = (math.random() * 2.0 - 1.0) * self.gain; end } end ev = Event:new(); function waiter(name) while yield(ev) do print("take that, " .. name .. string.rep("!", math.random(1, 10))) end end -- fork(function, arg1, arg2, ...) fork(waiter, "user"); -- fork an anonymous function fork(function() while yield(ev) do local ugens = { "Noise()", "SinOsc()" }; local which = ugens[math.random(1, 2)]; -- fork_eval code in a string! fork_eval("local n = " .. which .. ";" .. "connect(n, speaker);" .. "yield(second / 2);" .. "disconnect(n, speaker);"); end end) global.nb = "to share between script files, put stuff in global!"; print(global.nb .. " and try \"ckv -h\" sometime!"); while true do yield(math.random() * second * 4 + 1); ev:broadcast(); end
About
audio language based on Lua, inspired by ChucK
Resources
License
Stars
Watchers
Forks
Packages 0
No packages published