JD-990 & JD-800 Editor — User Manual
A complete guide to the web-based editor and librarian for the Roland JD-990 and Roland JD-800. The editor runs entirely in your browser over Web MIDI — nothing to install — and lets you edit every parameter, fetch and switch patches and banks, edit envelopes and effects graphically, use SR-JV80 expansion cards, manage your own private patch banks, capture card patches, and save or load .syx files.
1. Requirements & browsers
The editor uses the Web MIDI API, which is available in Chromium-based browsers only.
- Supported: Google Chrome, Microsoft Edge, Opera (desktop).
- Not supported: Safari and Firefox lack full Web MIDI.
- The page must be served over HTTPS (or
localhost) for MIDI access. - A MIDI interface connecting your computer to the synth's MIDI In/Out.
The editor is also an installable PWA (Progressive Web App) and works offline once loaded.
2. Connecting your synth
At the top of the app, the connection bar holds the MIDI settings:
| Control | What it does |
|---|---|
| MIDI Out | The port the editor sends to (your synth). Required to send edits, fetch and switch patches. |
| MIDI In | The port the editor receives on. Required to fetch patches/banks and to capture. |
| MIDI Thru (keyboard) | An input to forward to MIDI Out — see MIDI Thru. |
| Channel | The MIDI channel for notes (Test Note, Thru) and program changes. |
| Unit# | The synth's Device ID / Unit Number. It must match the synth, or SysEx is ignored. The JD-990 default is 17. |
| Synth | JD-990 or JD-800 — see Choosing a synth. |
| Expansion Card | Which wave expansion board is installed (JD-990) — see Expansion cards. |
Three LEDs (IN / THRU / OUT) flash with MIDI activity. A warning bar appears until a MIDI Out is selected.
3. The interface
- Top bar — logo, MIDI connection settings, LEDs and the theme toggle.
- Display — a hardware-style screen that is also the control centre. On the screen itself you'll find the bank selector (top left) and the Mode selector (top right), the big live patch name in the middle, and the patch selector with ‹ › steppers, favorites (☆ ☰) and search (🔍) below it. The utility buttons (Randomize, Test Note, Panic) sit on the display's left edge, and the main actions (Fetch Patch, Fetch Names, Save to JD, Load Patch…, Save Sys, My Banks) on its right edge. The name follows everything live: stepping patches, fetching, renaming, even edits made on the synth itself.
- Patch list — next to the display (Patch mode, wider screens): every patch in the selected bank as a clickable list. Click a row to load that patch on the synth; the current one is highlighted. Names fill in automatically as you step through patches, or all at once with Fetch names.
- Tabs — the Mode selector sits at the left of the tab row, followed by the sections of the current mode (e.g. Common, Effect, All Tones, Tone A–D). My Banks and Settings sit at the right.
- Settings — editor preferences: auto-fetch when stepping patches (turn off for faster browsing), whether the editor mode follows the synth, auto-load on mode switch, remember last patch, on-screen keyboard, theme, and bulk SysEx pacing.
- Editor panels — grouped parameters with knobs, menus and switches.
- Status bar — the last action and helpful messages.
- Footer — credit, this manual, and share buttons.
Hover any button to see a tooltip describing exactly what it does.
4. Choosing a synth
Use the Synth selector to switch between:
- Roland JD-990 — full support: Patch, Performance, Rhythm/Special and System, plus expansion cards. Model ID
0x57. - Roland JD-800 — Single Patch editing (Common, Effect and the four Tones). Model ID
0x3D, flat 21-bit SysEx addressing. Put the JD-800 in SINGLE mode.
The logo changes to match the selected synth and theme. The JD-800 has no wave-expansion slot, so the Expansion Card field is hidden for it.
5. Modes
On the JD-990 the Mode menu offers four areas (the JD-800 has Patch only):
| Mode | Contents |
|---|---|
| Patch | Patch Common, the dedicated Effect tab, and the four Tones (A–D). |
| Performance | Performance Common plus a Parts table: all 8 parts as rows with receive switch/channel, bank (Internal/Card/Preset A/B), patch by name (with a Names fetch button), level, pan, tuning, output and effect send per part. The 16 performances of the selected bank are listed beside the display — click to select. The factory names for Preset A and Preset B are built into the editor (they are the same on every JD-990); Internal and Card names fill in as you go or all at once with Fetch names, and everything learned is remembered between visits. |
| Special / Rhythm | Rhythm Common plus the 61 rhythm keys, each with a full tone editor and Setup Key. |
| System | Global settings (tuning, MIDI, effect switches, etc.). |
The mode follows the synth. Switching the editor's Mode also switches the JD-990's play mode: entering Performance or Special / Rhythm puts the synth into that mode so you hear exactly what you edit. Returning to Patch puts the synth back into Patch mode and re-selects the patch you were on. System has no play mode of its own, so selecting it leaves the synth's current mode untouched.
Selecting a Rhythm setup
In Special / Rhythm mode a Set: selector appears on the display: step between the Internal, Card, Preset A and Preset B rhythm setups with ‹ ›. Selection is sent as a Program Change, so set Channel (top bar) to the JD-990's Rhythm receive channel (factory default 10) and keep the synth in Rhythm mode. The editor then fetches the setup so it mirrors the synth.
Selecting a Performance
In Performance mode a Performance selector appears in the control bar: pick a bank (Internal, Card, Preset A, Preset B) and a number, and step with ‹ / ›. The JD-990 selects performances over MIDI (Bank Select + Program Change), so set Ctrl Ch to match the synth's Performance Control Channel — SYSTEM → MIDI → PERFORM CNTRL-CH (factory default 16). After selecting, the editor reads the performance back so it mirrors the synth.
6. Editing parameters
Every parameter is a control: a slider, a drop-down menu, or an on/off switch. Names, ranges and values follow the official manual.
- Live editing: every change is sent to the synth immediately as a SysEx
DT1message, so you hear it instantly. Edits go to the temporary edit buffer — your stored patches are untouched until you Save to JD. - Two-way live sync: when you turn a knob or move a slider on the synth itself, the editor mirrors the change (the JD-990 must have Tx Exclusive on and be patched to the selected MIDI In).
- Type a value: double-click any value to type it in exactly (matching the displayed format), then press Enter.
- Patch name: click the ✎ pencil next to the big name in the display (or double-click the name), type up to 16 characters and press Enter. The same pencil renames a Performance or Rhythm Setup in those modes; the new name is written to the synth immediately.
- MIDI info (i): click the small i after a parameter's name to see its SysEx address and a ready-to-send message for automating it from a DAW. See Automating from a DAW for the full story.
7. Automating from a DAW
This is the one area where the JD synths feel old-fashioned, so it's worth explaining clearly.
Why it isn't just "assign CC to Cutoff"
On a modern synth you'd map CC 74 to filter cutoff and be done. The JD-990 (1993) and JD-800 (1991) pre-date that convention — the idea that CC 74 = cutoff, CC 71 = resonance and so on only arrived with General MIDI 2 in 1999. These synths instead control their parameters over System Exclusive (SysEx), and respond to only a handful of ordinary Control Changes: Modulation (CC 1), Breath (CC 2), Foot (CC 4), Volume (CC 7), Pan (CC 10), Expression (CC 11), Hold (CC 64) and Portamento (CC 65). There is no CC that directly sets Cutoff, Resonance, an envelope time, etc. That's a limit of the hardware, not of this editor.
So there are two ways to automate from a DAW, and they're good at different things.
Option 1 — the synth's control matrix (best for real-time sweeps)
The JD-990 has a built-in modulation matrix. You route one of its real-time controllers to a destination like Cutoff, then automate that controller's CC in your DAW. To set up a filter sweep from, say, Expression (CC 11):
- Common tab → set Tone Ctrl Source 1 to EXP.
- On each sounding Tone tab (A–D) → panel Control Source 1 → set Destination 1 = CUTOFF and a Depth (e.g. +30, or negative to close the filter). Depth sets how far the sweep goes.
- In your DAW, automate CC 11 (Expression) on the JD-990's MIDI channel. The filter now follows it smoothly.
The available control sources, and the MIDI they listen to:
| Control source | MIDI message |
|---|---|
| MOD | CC 1 (modulation) |
| BREATH | CC 2 (breath) |
| FOOT | CC 4 (foot) |
| EXP | CC 11 (expression) |
| AFTER | Channel aftertouch |
| P.BEND | Pitch Bend |
Possible destinations include Pitch, Cutoff, Resonance, Level and the per-tone LFO amounts/rates. The catch: this is relative modulation around the patch's own setting (Depth controls the range), not an absolute "set Cutoff to exactly 64". For musical filter sweeps, that's exactly what you want, and it sounds smooth.
Option 2 — SysEx (for exact values, or any parameter)
If you need an absolute value, or a parameter the matrix can't reach, use SysEx. Click the i after a parameter's name to get its address and a ready-to-send DT1 message (with a Copy button). Send that from your DAW's SysEx feature.
Two things make raw SysEx automation fiddly, and explain why it isn't a smooth knob:
- The checksum changes with the value. The second-to-last byte is a Roland checksum over the address and data bytes, so it has to be recalculated for every value. A static "send this message" automation only works for one fixed value. Some DAWs and tools (and Max/M4L devices) can compute the Roland checksum on the fly; many can't.
- It's a multi-byte message, not a 0–127 CC lane. DAWs like Logic expose SysEx awkwardly compared with CC automation.
Rule of thumb: for live, hands-on movement (filter sweeps, swells) use Option 1 (the control matrix + a CC). For recalling exact settings or automating something with no matrix destination, use Option 2 (SysEx). And remember the editor itself sends every edit live, so for many sessions the simplest "automation" is just to record the editor's own SysEx output into your DAW while you move controls.
8. Tones & tone on/off
A JD-990 patch has four Tones (A–D), each on its own tab with full WG / Pitch / TVF / TVA editing. The small circle on each Tone tab is the tone on/off switch (the "Layer" / which tones sound). Click it to turn that tone on or off — a lit circle means the tone is active.
The All Tones overview tab
Because a JD sound is the sum of four tones, there's also an All Tones tab that shows the whole picture at once (JD-990 Patch mode). Each tone has a color — A blue, B green, C amber, D purple — used consistently across the tab, and on each tone's own tab: Tone B's tab underline, dot and accent color are green, C amber, D purple.
- Tone Mixer — one row per tone: on/off, waveform, and Level / Pan / Cutoff knobs, plus an Edit › button that jumps to the tone's full tab. Perfect for balancing the layers of a sound.
- Macro — All Tones — knobs for Cutoff, Resonance, Env Depth, Level, Attack/Decay/Sustain/Release and Pitch that move all four tones together, relatively: each tone keeps its offset from the others, so the character of the layering survives. The knob shows the average. Double-click a value to type — that sets every tone to the same value (handy for resetting the spread).
- Solo & tone tools — each mixer strip has an S button that plays that tone alone (click again to restore the layer), and the Tone A → B Copy / Swap row copies or exchanges every parameter between two tones.
- Overlaid envelopes — the Pitch, TVF and TVA envelopes of all four tones drawn in one graph each, in the tone colors. Drag any point (the nearest handle wins), and click the A B C D chips in a panel header to switch tones on or off. Muted tones are dimmed.
9. Graphical envelopes
Pitch, TVF and TVA envelopes are drawn as graphs with draggable points. Drag a point to change a rate/level; the numeric sliders update in sync, and vice-versa. This makes shaping attack, decay, sustain and release fast and visual.
10. Effects
The JD-990 has a dedicated Effect tab with the full effects chain. Each effect has its own On/Off switch at the top of its panel — if a block is off, changing its parameters does nothing audible.
- Group A: Distortion, Phaser, Spectrum, Enhancer (and the Group-A routing order).
- Group B: Chorus, Delay, Reverb (and the Group-B routing order).
11. Patches & banks
The control bar has a Bank menu and a Patch menu, with ‹ / › buttons (or the ↑/↓ arrow keys) to step through patches.
- Banks: Internal, Card, Preset A, Preset B — plus any installed expansion card banks (e.g. Exp: SR-JV80-04 JD/JV) and your own My: banks.
- Selecting a patch sends a Bank Select + Program Change so the synth follows along, then reads the patch back so the editor mirrors it.
- Switching bank loads the current patch from the new bank.
Next to the patch arrows are three quick tools: ☆ favorite, ☰ favorites list and 🔍 search (see the next section).
12. Favorites & search
With many banks installed it's easy to lose track of where a sound lives. Two tools, right of the patch ‹ › arrows, help you find and recall patches fast. Both store their data only in this browser — nothing is uploaded.
Favorites
- ☆ Star — click to add the current patch to your favorites; the star fills gold (★). Click again to remove it. The star always shows whether the patch you're on is a favorite.
- ☰ List — opens your favorites. Click any one to jump straight to it (it switches bank — and synth if needed — and selects the patch on the hardware). Drag or use ↑ ↓ to reorder, and ✕ to remove, just like the patch list in My Banks.
- Favorites survive reloads. A favorite remembers its bank in a way that keeps working even if you reorder or delete other banks. If a favorite's bank isn't available (e.g. its expansion card isn't installed), the app tells you instead of loading the wrong patch.
Search
- 🔍 Search — opens a search box. Type any patch name to find it across all your banks at once: Preset A/B, expansion-card banks and your private My Banks, plus any Internal/Card names you've fetched with Fetch Bank Names.
- Click a result to load it straight onto the synth. The modal stays open so you can audition several matches.
13. Fetch & save
| Button | What it does |
|---|---|
| Fetch Patch | Reads the selected patch from the synth into the editor (RQ1), so you edit its real sound. |
| Fetch Bank Names | Reads all patch names of the selected bank (names only) to fill the patch list. Fetched names are remembered per bank, so switching banks and back keeps them. The patch you're on stays selected while the names stream in. |
| Save to JD | Writes the current patch into a permanent memory location on the synth. A dialog lets you choose bank and slot. |
| Load Patch… | Loads a single patch (or a single Performance / System / Rhythm dump) from a .syx file on your computer. For whole banks, use My Banks → Import. |
| Save Sys | Saves the current patch to your computer as a .syx file. |
14. Randomize, Test Note & Panic
- Randomize — randomly tweaks the current patch's parameters to spark ideas (it still makes sound). Patch mode only.
- Test Note — plays a short note on the synth so you can audition without a keyboard.
- Panic — sends All-Notes-Off and sustain-off on every MIDI channel to stop stuck notes.
15. MIDI Thru
Pick a keyboard or controller in the MIDI Thru menu and the editor forwards its notes and controllers to the MIDI Out — turning your computer into a MIDI patchbay so you can play the JD-990 from a keyboard while you edit.
16. Theme
The 🌙 / ☀️ button toggles dark and light themes. Your choice is remembered (this manual follows the same setting).
17. Expansion cards (SR-JV80)
Choose your installed wave-expansion board in the Expansion Card menu (JD-990 only). A card provides two kinds of content:
Waveforms
Set a tone's WG Source = Exp and its waveform menu lists the card's waveforms. This is the part that always works on a JD-990, for any supported card.
Patch banks
If a card ships with JD-990 patch data, those patches appear as Exp banks in the Bank menu and load to the synth when selected. SR-JV80-04 Vintage Synth includes two banks:
- Exp: SR-JV80-04 JD — 256 patches made specifically for the JD-990 ("EXP B").
- Exp: SR-JV80-04 JV — 255 standard card patches.
SR-JV80-01 Pop is included as a waveform card (154 waveforms; no bundled patch bank).
18. My Banks (private & local)
Open My Banks from the control bar to import and manage your own patch banks. This is the place for purchased or third-party .syx banks.
- Import .syx… — loads one or more JD-990 bank files. They appear in the Bank menu as My: <name> and load like any patch.
- Search — type in the search box to search every bank at once. The right-hand view switches to a results list showing each matching patch together with the bank it lives in: click a row to hear the patch on the synth, ▶ plays it too, + copies it to Staging, and → jumps to its bank. Clear the box to get the normal bank view back. While on My Banks the ↑/↓ arrow keys walk through the visible list (bank view or search results) and audition each patch as you go — they work even while typing in the search box, and they never step the synth's own patch order here.
- Always in Patch mode — auditioning or loading a patch from My Banks automatically switches the editor (and the JD-990) back to Patch mode if you happened to be in Performance or Rhythm mode, so you always hear the patch you clicked. You stay on the My Banks tab.
- Export all… / Import all… — back up your entire collection to a single file and restore it later (or on another computer). The backup stays on your computer; it's never uploaded.
- Import JD-800 → 990… — convert JD-800 patches (
.syx) into a JD-990 bank. You can pick one whole-bank file, or select many single-patch files at once — they're merged (in filename order) into one bank. Handy because the JD-800, like the JD-990, dumps only one patch at a time, so collections often come as many small files. The JD-990 shares the JD-800's sound engine and waveforms, so the core of each patch (waveform, pitch, filter, amp, their envelopes, LFOs and EQ) maps closely. It's a best-effort conversion: the effects sections differ between the two units, so effects may need a tweak, and JD-800 SO-PCM wave-card sounds have no direct JD-990 equivalent. Select the converted bank and audition each patch on your JD-990. - The bank list (left): click a bank to browse it. Drag banks to reorder the list (the order is remembered), double-click a name to rename, and use the hover buttons to rename (✎), download (.syx ⬇) or delete (✕) a bank.
- The bank view (right) shows every patch in the selected bank: click a row to hear it on the synth, drag rows to reorder within the bank (saved instantly), double-click a name to rename the patch (the name is written into the patch data itself), + to copy it to Staging and ✕ to remove it. Header buttons: Edit in Staging, Add all → Staging, Save to JD, Rename, Save .syx, Delete.
- Staging (below the bank list) is the workbench: drag patches between the bank view and Staging in either direction (dropping into a bank inserts at the drop position and saves), reorder (drag or ↑ ↓), rename (double-click), audition (▶), remove (✕), merge in .syx files or capture patches from the synth — then Download .syx or Save to My Banks.
19. Capture card → bank
Don't have a card's .syx? Capture it from a JD-990 that has the card installed, then save a sharable bank file. This is also how you help build the community library for cards you own.
- Connect MIDI In + Out. Open My Banks and click Auto-capture (whole bank) — a progress window opens.
- On the synth, load a card patch (PATCH → UTILITY → CARD → Ld PRM → EXP BOARD) and step through the patches with the VALUE dial. Each new patch is grabbed automatically; the counter ticks up.
- Click Done to review the list — reorder / remove / add just like a bank.
- Download .syx to share the bank, or Save to My Banks to keep it.
20. Technical / SysEx reference
For the curious and for troubleshooting:
- Models: JD-990 = model ID
0x57, 4-byte addresses[block][unit][offHi][offLo]; JD-800 = model ID0x3D, flat 21-bit 3-byte addresses. - Messages:
DT1(data set 1) writes parameters;RQ1(request 1) reads them back. Format:F0 41 <unit> <model> <11|12> <addr> <data> <checksum> F7. - Checksum: Roland's
(128 − (Σ address+data) mod 128) mod 128. - Live areas: Temp Patch block
0x03, Performance0x01, System0x00, Rhythm0x04; Internal Patch0x06. - A patch is 486 bytes: Common (118) + four Tones (92 each).
- Reliable bulk transfers are paced (~30 ms between messages) to avoid dropped packets on older Roland hardware.
21. Privacy
The editor runs entirely on your device. MIDI data flows between your browser and your synth; nothing is uploaded. Your settings and your private banks are stored locally in your browser only.
22. Troubleshooting
| Symptom | Fix |
|---|---|
| No MIDI ports | Use Chrome/Edge/Opera over HTTPS, allow MIDI access, and check the interface is connected. |
| Edits don't change the sound | Select a MIDI Out; on the synth set Rx Exclusive ON and match the Device ID to Unit#. |
| Fetch / capture times out | Select a MIDI In; set Tx Exclusive ON on the synth; confirm Unit#. |
| An effect isn't heard | Turn its On switch on (top of the effect panel) and check System effect switches; be in Patch mode. |
| Save to JD did nothing | Turn Memory Protect OFF on the synth (Utility). |
| Old version after an update | Reload the page; the app updates its cached version automatically. |