JS-80
Play two flexible, polyphonic, 80's style synthesizers and a sequencer
with a MIDI keyboard and your computer keyboard, all in a single
browser window. (Or produce distorted, disconnected clicks and noises if
your device doesn't have enough CPU capacity for this app. If this
happens, try reloading the page and select lower poliphony for the
synth modules.)
Check out the DAW plugin version with a lot more
features, improved performance, better sound quality, etc.:
JS80P.
Connect your MIDI keyboard, then hit the button below:
Known problems and quirks
-
Realtime audio manipulation may require a lot of CPU resources, so
it's recommended to close other browser tabs and CPU-intensive
programs. Also, this may drain your battery, so it's recommended to
connect the charger.
-
Unfortunately, the wave folder and the distortion effects have
aliasing issues in some configurations, and reducing these seems to
require trade offs that introduce more problems elsewhere.
-
As of 2022 June, in order to use a MIDI keyboard as an input device in
Firefox, you have to:
-
set
dom.webmidi.enabled
to true
in the
about:config
settings (and make sure that
midi.testing
is false
),
-
and if this is the first time you want to use your MIDI keyboard
with this app, then
install this site
permission addon.
-
As of 2022 June, MIDI keyboards don't work at all in Chromium on
Ubuntu, due to a
bug in its snap packaging.
-
It is possible to put together a patch which causes digital distortion
in the sound or no sound at all. If you experience similar sound
issues, try to adjust the settings of your patch.
Tips and tricks
-
Keyboard shortcuts are shown on the screen between brackets: for
example, pressing
1
selects the first bank of
the Sequencer, and pressing A
will play the
note A on the virtual keyboard. (Pressing the
shift
key gives the note a little extra velocity.)
-
The keyboard shortcut labels correspond to the standard US QWERTY
keyboard layout, but it's the physical location of the keys that
matters, not the label on the computer keys. For example, if you use
a QWERTZ keyboard layout, then you have to press the key which has
the label
Y
near the left shift
key in order
to play the lowest C note of the on-screen virtual piano
keyboard.
-
MIDI controllers like the pitch wheel or the modulation wheel usually
go from 0% to 100%, but you can make them, for example, go from 20%
to 70% using one of the Macros at the
bottom of the screen. For example, assign
Flex 1
to a
synthesizer parameter, then assign the modulation wheel
(modulation (CC 1)
) to the input (IN
) of the
first Macro, then set its MIN
and MAX
value to 20% and 70% respectively.
-
All changes to the Sequencer (including turning it off or
switching to a different bank) take effect only after the
current set of beats has finished playing to the end, so you don't
have to be very precise with your timing. The only exceptions are the
tempo, arpeggio, gap, and detune parameters which take effect
immediately, allowing for example gradual, continuous tempo changes
while playing.
-
If you set the Target parameter of the Virtual
keyboard to Sequencer root note then you can change the
modality
of the scale while it's playing. Example:
-
Configure the following Scale notes:
C
,
D
, E
, F
, G
,
A
, B
. (Make the unneeded ones empty.)
-
Set the BPM to 30.
-
Configure the first beat to play
1
, 3
,
and 5
.
-
Configure the second beat to play
2
, 5
,
and 7
.
-
Hit the
space
key, so the Sequencer starts
repeating a C-major chord, followed by a G-major
(2nd inversion).
-
Press
A
, so in the next iteration and onwards, the
Sequencer will play A-minor and E-minor
(2nd inversion).
-
Press
Z
again to go back to C-major and
G-major (2nd inversion).
Note that when the Virtual keyboard is set to drive the
Sequencer like this, then pressing the keys won't make any
sound on its own.
-
By default, the MIDI module has 8 notes polyphony and the
QWERTY module has 6. The Sequencer reserves up to
5 notes from the module to which it is assigned, reducing the
polyphonic notes of the module that can be played manually while the
Sequencer is turned on.