‹ More SC Workshop Material Harmonicism ›

Keystroke Recorder

2014-10-15 23:55 supercollider

clean-up: #51

Today a very simple piece of code that takes whatever you're typing in a document and posts it back 2 seconds later. See it as a demonstration. The list is treated as a FIFO buffer.

Note: only works in SuperCollider versions with Document support (not 3.6, but 3.4, 3.5, 3.7...)

(
var delay= 2;  //post 2 seconds later
var l= List.new;

//--record in list l
Document.current.keyDownAction= {|doc, key|
  l.addFirst(
    (key: key, time: Main.elapsedTime)
  );
};

//--playback of list l
Routine({
  inf.do{
    var now= Main.elapsedTime;
    if(l.size>0 and:{now-delay>l.last.time}, {
      l.pop.postln;
    });
    0.01.wait;
  };
}).play;
)

‹ More SC Workshop Material Harmonicism ›