samer@0: *** JSLAB version 0.4 samer@0: *** Copyright 2000,2004: Dr. Samer Abdallah samer@0: *** samer.abdallah@elec.qmul.ac.uk samer@0: samer@0: samer@0: This is a Java class library and a bunch of samer@0: scheme scripts which provide an interactive, samer@0: interpreted environment for doing mathematical samer@0: and signal processing experiments. samer@0: samer@0: It doesn't really have a name yet - JSLAB just samer@0: stands for Java Scheme Lab (not too catchy eh?) samer@0: and also the top level is still eponymously named. samer@0: It will be changed eventually but that requires samer@0: changes to nearly every source file and so is samer@0: deferred till the next version. samer@0: samer@0: The core classes can run with or without a GUI. samer@0: Many (those deriving from samer.core.Viewable) samer@0: can generate a GUI on demand. Generally, if samer@0: you type samer@0: (expose) samer@0: at the scheme prompt, you will get a window samer@0: containing all the currently registered samer@0: Viewable objects. samer@0: samer@0: Signal flow is usually handled by a main samer@0: loop managed by an RThread object (see samer@0: samer.tools.RThread and samer.tools.Task) samer@0: In order to build the loop, you register samer@0: Task objects with it (see task.scm). These samer@0: are then run as part of the loop, which can samer@0: be controlled either from the GUI or from samer@0: the scheme prompt. The main Scheme commands samer@0: for this are samer@0: (addtask ) ; add a task samer@0: (pr-tasks) ; list current tasks samer@0: (start) ; start main loop samer@0: (stop) ; etc... samer@0: (task-ref 3) ; get 4th task in list samer@0: (remove (task-ref 2)); remove 3rd task samer@0: samer@0: Most of the high level stuff is in Scheme, so samer@0: it's best to look in the scheme subdirectory samer@0: for more info. samer@0: samer@0: There are some examples in the examples directory, samer@0: but the only ones likely to work are in samer@0: examples/sound/sampled/ samer@0: Even then, you may have some issues to do with samer@0: which mixer (ie sound card) the program tries samer@0: to grab, as I haven't really sorted out a general samer@0: way of allowing the user to decide which mixer samer@0: to use. samer@0: samer@0: samer@0: INSTALLATION: samer@0: See INSTALL. samer@0: There is a pre-built jar in lib/samer.jar samer@0: samer@0: Note: The packages samer.core.* are in a directory samer@0: called 'core_' instead of 'core', because CVS ignores samer@0: any file/directory called 'core'. samer@0: samer@0: