JSFX
A dynamic text mode live FX processor
JSFX in Hardware
In 2004, before we started developing
REAPER, we created software designed for creating and modifying FX live, primarily for use with guitar processing. The plan was that it could run on a minimal Linux distribution on dedicated hardware, for stage use. We built a couple of prototypes:
These hand-built protoypes used mini-ITX mainboards with either Via or Intel P-M CPUs, cheap consumer USB audio devices, and Atmel AVR microcontrollers via RS-232 for the footboard controls. The cost for the parts used was around $600 each. Pictures from development and construction:
In the end, however, we concluded that we preferred to be in the software business, not the hardware business, and our research into adding multi-track capabilities in JSFX led us to develop
REAPER. Since then, REAPER has integrated much of JSFX's functionality, and improved on it.
JSFX in Software
The most modern way to use JSFX is currently to use
REAPER.
If you are interested in the JSFX standalone software, it is still available here:
- Windows 2000/XP/Vista/7: v0.992 for Windows (1.3MB, Aug 23 2006)
- Supports ASIO, Kernel Streaming, DirectSound, and WaveOut.
- Linux (2.4+, 2.6 recommended x86 only): v0.991 linux (x86) tarball (1.1MB, Jul 15 2005)
- Supports ALSA and OSS, only tested on Debian unstable distribution, but should work on most recent Linux 2.4 and 2.6 systems.
- Mac OS X 10.3 (G4 and G5): v0.991 MacOS X self mounting disk image (1.3MB, Jul 15 2005)
- Supports CoreAudio for i/o (now with multidevice support)
- Currently running JSFX from within Terminal has plenty of limitations, including page up/down, various other keys not working. These are known issues.
Additional notes on JSFX
- This is unsupported software -- many things may be broken, and it may not work completely as you expect.
- Be sure to turn your speakers down! If you run JSFX and it is sampling the input and outputting the output, you could get some nasty feedback if not prepared.
- On Windows, set up your mixer settings accordingly. Once you run JSFX, it will let you choose the input/output method. For low latency, ASIO or Kernel Streaming is really a must. Kernel Streaming should work most of the time, though currently it just uses the default sound devices, so you may have to change this in the Windows control panel. If you have an ASIO driver for your soundcard, this is the vastly preferred way to go. A good ASIO driver for USB sound devices is available (though not free) from usb-audio.com. A good ASIO driver for all soundcards (it just wraps the WDM driver) is available at asio4all.com (and is free).
- If you are interested in controlling JSFX, it supports a serial interface for some basic actions (see -foot), specifically, it will read from this device a character at a time, their values interpreted as:
- 8-16: these correspond to 8 buttons. The last button (16) toggles modes:
- Trigger modes: values 8-15 trigger triggers 0-6 for effects that use them
- Preset mode: 14-15 change bank, 8-13 load preset in that bank. If you use the keyboard interface to save a preset, you can control the save preset UI using these buttons as well.
- 32-47: adjust assignable knob: low bit is direction, upper 3 bits define which knob.
- 64-67: set knob absolute value: sets values for knob 4-8 (0-3 not supported), next character will be interpreted as knob position.
- Documentation for the JS programming language is available in both old v0.99x form, and the new REAPER/JS Programming Reference.
JSFX Discussion
If you wish to discuss all things JSFX, see the
REAPER/JS Forum.