view README @ 8:5e3cbbf173aa tip

Reorganise some more
author samer
date Fri, 05 Apr 2019 22:41:58 +0100
parents bf79fb79ee13
children
line wrap: on
line source
*** JSLAB version 0.4
*** Copyright 2000,2004: Dr. Samer Abdallah 
*** samer.abdallah@elec.qmul.ac.uk


This is a Java class library and a bunch of
scheme scripts which provide an interactive,
interpreted environment for doing mathematical
and signal processing experiments. 

It doesn't really have a name yet - JSLAB just
stands for Java Scheme Lab (not too catchy eh?)
and also the top level is still eponymously named.
It will be changed eventually but that requires 
changes to nearly every source file and so is
deferred till the next version.

The core classes can run with or without a GUI. 
Many (those deriving from samer.core.Viewable)
can generate a GUI on demand. Generally, if
you type
	(expose)
at the scheme prompt, you will get a window
containing all the currently registered 
Viewable objects.

Signal flow is usually handled by a main
loop managed by an RThread object (see
samer.tools.RThread and samer.tools.Task)
In order to build the loop, you register
Task objects with it (see task.scm). These
are then run as part of the loop, which can
be controlled either from the GUI or from
the scheme prompt. The main Scheme commands
for this are
	(addtask <newtask>)	; add a task
	(pr-tasks)				; list current tasks
	(start)					; start main loop
	(stop)					; etc...
	(task-ref 3)			; get 4th task in list
	(remove (task-ref 2)); remove 3rd task

Most of the high level stuff is in Scheme, so
it's best to look in the scheme subdirectory
for more info.

There are some examples in the examples directory,
but the only ones likely to work are in
examples/sound/sampled/
Even then, you may have some issues to do with
which mixer (ie sound card) the program tries
to grab, as I haven't really sorted out a general
way of allowing the user to decide which mixer
to use.


INSTALLATION:
See INSTALL.
There is a pre-built jar in lib/samer.jar

Note: The packages samer.core.* are in a directory
called 'core_' instead of 'core', because CVS ignores
any file/directory called 'core'.