Skip to content

Instantly share code, notes, and snippets.

@vrld
Created June 3, 2014 12:31
Show Gist options
  • Save vrld/b1e6f4cce7a8d15e00e4 to your computer and use it in GitHub Desktop.
Save vrld/b1e6f4cce7a8d15e00e4 to your computer and use it in GitHub Desktop.
Euclidean Rythms in Lua
-- Euclidean rythm (http://en.wikipedia.org/wiki/Euclidean_Rhythm)
function rythm(k,n)
local r = {}
for i = 1,n do
r[i] = {i <= k}
end
local function cat(i,k)
for _,v in ipairs(r[k]) do
r[i][#r[i]+1] = v
end
r[k] = nil
end
while #r > k do
for i = 1,math.min(k, #r-k) do
cat(i, #r)
end
end
while #r > 1 do
cat(#r-1, #r)
end
return r[1]
end
-- writes 'X__X__X_'
for _,v in ipairs(rythm(3,8)) do
io.write(v and 'X' or '_')
end
print()
-- writes 'X_X_X_XX'
for _,v in ipairs(rythm(5,8)) do
io.write(v and 'X' or '_')
end
print()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment