tehn / isms

39 stars 7 forks source link

isms

lua + clocks + osc + grid + midi + ui

requires lua 5.4, sdl2, liblo

(apt-get: liblua5.4-dev libsdl2-dev liblo-dev)

currently only tested on ubuntu linux

install

./waf configure
./waf
sudo ./waf install
sudo ./waf install_lib

currently

user/system folder structure

library folder: ~/.local/share/isms

TODO

- cpu usage at rest (should be lower)
- consider implications of running multiple instances
  x osc port assignments (ie auto-increment if requested is taken)
  - grid/midi "focus"
- config file (pre-run) for setting "reserved" grid/midi slots (ie serial numbers)
  - ~/.local/share/isms/init.lua

- sdl
  - text
  - more drawing functions
  - (?) mouse events
- socket input: allow blocks, not just line
- repl history (readline/etc)
- repl: fix color coding (where text is coming from: socket or local)

- optimization
  - sdl should probably have its own thread
- security: should udp socket input check incoming ip (restrict to localhost?)
  - or arg to disable

- (?) metro allocator

lua

g = grid.connect(id) -- id = index or default 0
g.all(z)
g.led(x,y,z)
g.redraw()
g.event.key(x,y,z)

grid.all(id,z)
grid.led(id,x,y,z)
grid.redraw(id)
grid.event.key(id,x,y,z)
grid.event.add(id,serial)
grid.event.remove(id,serial)

window.init(x,y)
window.pixel(x,y,color)
window.line(x1,y1,x2,y2,color)
window.redraw()
window.event.key(code)

metro.start(index, time_sec, count, stage)
metro.stop(index)
metro.event.tick(index, stage)

osc.send(path, args)
osc.event.receive(path, args, from)

clock -- TODO
midi -- currently removed, needs reimplementation

acknowledgements

reimagining of norns. reconsidering design for use on any computer with large screen and keyboard.

reference