XCent User Manual
Version 0.9.1 — April 2026
Table of Contents
- Introduction
- Requirements & Installation
- Interface Overview
- PLAY Mode
- EDIT Mode
- FUNC Mode
- Patch Management
- MIDI
- Settings
- FM Sound Design
- Appendix
Introduction
XCent is a circuit-faithful emulation of the Yamaha DX100 — a four-operator FM synthesizer built around Yamaha's YM2164 OPP chip. It runs the actual DX100 ROM firmware on an HD6303 CPU emulator for 100% accurate voice allocation and parameter handling. The FM engine operates at the chip's native 55,930 Hz sample rate, resamples to your host's rate, and emulates the hardware's DAC quantization, aliasing characteristics, and reconstruction filter behavior.
XCent ships with the 192 factory voices from the original DX100 ROM, organized into four read-only ROM banks (100, 200, 300, 400) of 24 voices each. Four writable RAM banks (A, B, C, D) are available for your own patches. All eight FM algorithms are supported, with full four-operator control and OP4 self-feedback.
The interface provides three operating modes matching the DX100 hardware:
- PLAY — Browse and load patches
- EDIT — Edit voice parameters (Classic button grid or Visual knobs/sliders)
- FUNC — Global settings (Master Tune, MIDI channel, portamento, etc.)
This manual covers XCent-specific operation: installation, the interface, patch management, MIDI, and preferences. FM synthesis theory and sound design technique are not covered here. The DX100 and XCent share the same synthesis engine, and the Yamaha DX100 Owner's Manual is the authoritative reference for those topics.
Requirements & Installation
System Requirements
| Platforms | Windows 10+, macOS 11+, iOS/iPadOS 16+, Linux (x86-64) |
| Formats | VST3, CLAP, Standalone (desktop); AUv3, Standalone (iOS/iPadOS) |
| CPU | Any modern x86-64 processor (desktop) or Apple Silicon/A-series (iOS). The DSP runs at native hardware rate (55,930 Hz) — allow for that in dense sessions. |
| RAM | Minimal. Factory library is ROM-sourced and loaded on first use. |
Installation
Windows:
# VST3
Copy-Item "XCent.vst3" -Destination "$env:ProgramFiles\Common Files\VST3" -Recurse
# CLAP
Copy-Item "XCent.clap" -Destination "$env:ProgramFiles\Common Files\CLAP"
macOS:
# VST3
cp -r "XCent.vst3" ~/Library/Audio/Plug-Ins/VST3/
# CLAP
cp "XCent.clap" ~/Library/Audio/Plug-Ins/CLAP/
# AU (if included)
cp -r "XCent.component" ~/Library/Audio/Plug-Ins/Components/
Linux:
# VST3
cp -r "XCent.vst3" ~/.vst3/
# CLAP
cp "XCent.clap" ~/.clap/
iOS/iPadOS: Install via the App Store or TestFlight (beta).
User Data Location
After installation, XCent's factory library and preferences are stored in:
- Windows:
%APPDATA%\Knives On Strings\XCent - macOS:
~/Library/Application Support/Knives On Strings/XCent - Linux:
~/.config/KnivesOnStrings/XCent
The library folder location is configurable via Settings.
Interface Overview
XCent's window is divided into four main areas: Top Bar, Left Panel, Center Panel, and Patch Browser/Parameter Grid (right panel).
Top Bar
From left to right:
| Control | Function |
|---|---|
| XCent Logo | Branding. Does not perform any action. |
| ◄ Patch name ► | Displays the active patch name. Click to open patch browser. Arrows step through patches in the current bank. |
| ⚙ Settings | Opens Settings modal (themes, MIDI channel, audio device, user patches folder). |
| ? About | Opens About modal with version info and links. |
| 🎹 Keyboard | Toggles on-screen keyboard (49 keys, C2–C6). |
| CPU | Real-time CPU load meter for this instance. |
| VU | Output level meter (8-segment LED). |
| OUTPUT | Master output level knob. Double-click to reset to unity (0 dB). |
Left Panel
The left panel mirrors the DX100 hardware layout:
| Control | Function |
|---|---|
| LCD Display | 16-character dot-matrix display showing current mode, patch name, and parameter values during editing. Available in Teal (authentic) or OLED Blue styles. |
| PLAY / EDIT / FUNC | Mode selector buttons. Active mode is lit. |
| OP1–OP4 | (EDIT mode only) Selects which operator's parameters are shown. Each button has an indicator dot; the lit one is active. |
| Bank buttons | (PLAY mode only) Two rows of four LEDs: top row selects ROM banks (100, 200, 300, 400); bottom row selects RAM banks (A, B, C, D). Press PLAY again to toggle between ROM and RAM bank groups. |
| INC / DEC | Increment/decrement the selected parameter. Hold for continuous stepping. |
| Data Knob | Rotary data entry for the selected parameter (equivalent to INC/DEC but continuous). |
Center Panel
Read-only information about the active patch:
| Display | Function |
|---|---|
| Algorithm Diagram | Visual representation of operator routing. Shows carriers and modulators and how they connect. Click the dropdown to select algorithms 1–8 directly. |
| Envelope Display | Graphical representation of the active operator's ADSR envelope (AR, D1R, D1L, D2R, RR). Updates in real time as you edit. |
Patch Browser / Parameter Grid (Right Panel)
In PLAY mode: Shows the patch browser (6×4 grid, 24 slots per bank). Click any slot to load that patch immediately. The active patch is highlighted.
In EDIT mode: Shows either:
- Classic Edit — 4×6 button grid matching DX100 hardware layout
- Visual Edit — Graphical knobs and sliders (toggle via second press of EDIT button; green indicator shows Visual Edit is active)
PLAY Mode
PLAY is the default mode. Browse and load patches; no parameters are editable here.
The LCD displays the current patch number and name (e.g., 101: IVORYEBONY).
Navigating Banks
XCent organizes patches into two groups of banks. Use the bank buttons on the left panel or the patch browser to select the active bank:
ROM banks (read-only — original DX100 factory voices):
| Button | Bank | Voices |
|---|---|---|
| 100 | Bank 100 | Patches 101–124 |
| 200 | Bank 200 | Patches 201–224 |
| 300 | Bank 300 | Patches 301–324 |
| 400 | Bank 400 | Patches 401–424 |
RAM banks (writable — your own patches):
| Button | Bank | Voices |
|---|---|---|
| A | Bank A | Patches A 1–A24 |
| B | Bank B | Patches B 1–B24 |
| C | Bank C | Patches C 1–C24 |
| D | Bank D | Patches D 1–D24 |
Press PLAY again while already in PLAY mode to toggle between the ROM bank group and the RAM bank group.
Selecting a Patch
- Click any slot in the browser grid
- Use ◄ ► arrows in the top bar to step through the current bank
- Use INC/DEC buttons to step through patches
Favorites & Recents
Above the bank selector:
- ★ Favorites — Shows all starred patches from any bank
- 🕐 Recents — Shows the last 24 loaded patches
Click the star icon on any patch to toggle its favorite status.
EDIT Mode
EDIT mode exposes all voice parameters. Two views are available:
- Classic Edit — Button grid matching DX100 hardware (default)
- Visual Edit — Graphical knobs and sliders (press EDIT again to toggle; green indicator shows Visual Edit is active)
Both views modify the same parameters. The active operator (OP1–OP4) is selected via the left panel buttons.
Note: Edits modify a working copy of the patch. Use Save in the patch browser to commit changes. Unsaved edits survive mode switches but are lost if you load a different patch without saving. A red indicator in the top bar shows when the edit buffer is dirty (has unsaved changes).
Data Entry
All parameters support these interactions:
| Action | Function |
|---|---|
| Click + Drag | Drag up/down to change value. Faster than INC/DEC for large adjustments. |
| Shift + Drag | Fine adjustment. Slower drag for precise changes. |
| Double-click | Resets parameter to its value from the loaded patch (not init default). This is the "load point" — the state when the patch was last loaded. |
| Right-click | (Operator parameters only) Copy menu — copy current operator's value (or all parameters) to other operators. |
| INC / DEC | Increment/decrement by one step. Hold for continuous stepping. |
| Data Knob | Continuous rotary entry for selected parameter. |
Classic Edit
Parameter grid layout (6 columns × 4 rows):
| Row | Col 1 | Col 2 | Col 3 | Col 4 | Col 5 | Col 6 |
|---|---|---|---|---|---|---|
| 1 | ALG | FBL | FREQ | DET | OUT | AMS ON |
| 2 | AR | D1R | D1L | D2R | RR | KEY VEL |
| 3 | LW | LFS | LFD | SYNC | PMD | AMD |
| 4 | LS | RS | EBS | PMS | AMS | XPOSE |
For full parameter descriptions, see the Visual Edit section below or the Yamaha DX100 Owner's Manual.
Visual Edit
Press EDIT twice to enter Visual Edit mode (green indicator on EDIT button confirms active). The parameter area is divided into three sections: Operator, LFO, and Patch.
Operator Section (OP1–OP4)
Select the active operator using the OP1–OP4 buttons on the left panel. Each operator has independent parameters:
Envelope (5 sliders):
| Control | Parameter | Range | Description |
|---|---|---|---|
| AR | Attack Rate | 0–31 | How quickly envelope rises from zero to peak after note-on. 31 = instant, 0 = slowest. |
| D1R | Decay 1 Rate | 0–31 | How quickly level falls from peak to D1L sustain. 31 = instant, 0 = no decay. |
| D1L | Decay 1 Level | 0–15 | Sustain level after initial decay. 0 = maximum sustain, 15 = decay to silence. |
| D2R | Decay 2 Rate | 0–31 | Second, slower decay during sustain phase. Useful for sounds that die away while held. 0 = disabled. |
| RR | Release Rate | 0–15 | How quickly envelope falls to zero after note-off. 15 = instant, 0 = slowest. |
Frequency & Level (3 knobs):
| Control | Parameter | Range | Description |
|---|---|---|---|
| FREQ | Frequency | 0.5–31 | Operator frequency as multiple of played note. 1 = unison, 2 = octave up, 0.5 = octave down. Non-integer values create inharmonic, bell-like or metallic tones. Primary timbre control. |
| DETUNE | Fine Detuning | -3 to +3 | Shifts operator slightly sharp or flat. Subtle detuning between operators adds richness and movement. Center = no detune. |
| LEVEL | Output Level | 0–99 | For carriers: volume contribution. For modulators: modulation depth (higher = brighter/more complex timbres). |
Key Scaling & Modulation (3 knobs):
| Control | Parameter | Range | Description |
|---|---|---|---|
| L.SCL | Left Key Scaling | 0–99 | Level change for notes below the scaling breakpoint. Positive = increase level toward bass, negative = decrease. |
| R.SCL | Right Key Scaling | 0–99 | Level change for notes above the scaling breakpoint. Commonly used to reduce harshness in upper register. |
| EG.BS | EG Bias Sensitivity | 0–7 | How strongly breath controller (CC2) modulates this operator's envelope. 0 = no effect. |
Switches (2 toggles):
| Control | Parameter | Description |
|---|---|---|
| AME | Amplitude Mod Enable | When ON, LFO amplitude modulation affects this operator (governed by A.DEP in Patch section). |
| KVS | Key Velocity Sensitivity | When ON, harder keypresses increase operator level. OFF = full level regardless of velocity. |
LFO Section
Voice-global LFO parameters (shared by all four operators):
| Control | Parameter | Range | Description |
|---|---|---|---|
| Waveform | LFO Shape | 4 choices | Triangle (smooth vibrato/tremolo), Sawtooth (sweep), Square (trill), S&H (random stepped). |
| SPEED | LFO Rate | 0–99 | How fast the LFO cycles. Low = slow modulation, high = fast tremolo/vibrato. |
| DELAY | LFO Delay | 0–99 | Time after note-on before LFO begins. 0 = immediate, higher = delayed fade-in. |
Patch Section
Voice-global parameters (apply to entire patch):
Structure (2 knobs):
| Control | Parameter | Range | Description |
|---|---|---|---|
| ALG | Algorithm | 1–8 | Operator routing configuration. Determines carriers vs modulators. See Algorithm Reference. |
| FBL | Feedback Level | 0–7 | OP4 self-feedback. 0 = none, higher = buzzy/noisy/chaotic tones. DX100 only feeds back OP4. |
LFO Modulation (3 knobs + 1 toggle):
| Control | Parameter | Range | Description |
|---|---|---|---|
| P.DEP | Pitch Mod Depth | 0–99 | LFO pitch modulation amount (vibrato width). Works with P.SNS and mod wheel. |
| A.DEP | Amp Mod Depth | 0–99 | LFO amplitude modulation amount (tremolo) for operators with AME enabled. |
| P.SNS | Pitch Mod Sensitivity | 0–7 | Scales P.DEP's effect. Master sensitivity for pitch LFO. |
| SYNC | LFO Key Sync | ON/OFF | When ON, LFO resets phase on every note-on for consistent attack. |
Tuning & Performance (6 knobs + 2 toggles):
| Control | Parameter | Range | Description |
|---|---|---|---|
| XPOSE | Transpose | -24 to +24 | Shifts entire voice in semitones. Stored per-patch. |
| POLY | Polyphony | ON/OFF | ON = polyphonic (8 voices), OFF = monophonic (latest note cuts earlier). |
| PORT | Portamento | ON/OFF | Enables pitch glide between notes. Speed set by P.TIME. |
| P.TIME | Portamento Time | 0–99 | Glide speed when portamento active. Higher = slower. |
| P.BEND | Pitch Bend Range | 0–12 | Max pitch deviation in semitones at full pitch wheel deflection. |
Controller Routing (6 knobs):
| Control | Parameter | Range | Description |
|---|---|---|---|
| MW.P | Mod Wheel → Pitch | 0–99 | How much mod wheel (CC1) adds to vibrato (P.DEP). |
| MW.A | Mod Wheel → Amplitude | 0–99 | How much mod wheel adds to tremolo (A.DEP). |
| BC.P | Breath → Pitch | 0–99 | Breath controller (CC2) pitch modulation sensitivity. |
| BC.A | Breath → Amplitude | 0–99 | Breath controller amplitude sensitivity (expression). |
| BC.PB | Breath → Pitch Bias | 0–99 | Breath pressure applies DC offset to pitch (upward bend), not LFO modulation. |
| BC.EB | Breath → EG Bias | 0–99 | Breath raises operator levels for operators with EG.BS > 0 (brightness/attack). |
FUNC Mode
FUNC mode contains global performance and MIDI settings. These are not stored per-patch — they apply to the entire XCent instance.
| Parameter | Description |
|---|---|
| M.TUNE | Master Tune — fine-tunes entire instrument (±50 cents). Useful when matching hardware at non-concert pitch. |
| POLY/MONO | Global polyphonic/monophonic mode (can also be set per-patch in EDIT). |
| PORT MODE | Portamento mode: Full-time (always glide) or Fingered (glide only on legato). |
| PORT TIME | Global portamento glide speed (can also be set per-patch in EDIT). |
| P.BEND | Global pitch bend range in semitones (can also be set per-patch in EDIT). |
| MW PITCH | Global mod wheel pitch modulation sensitivity. |
| MW AMPLITUDE | Global mod wheel amplitude modulation sensitivity. |
| BC PITCH | Global breath controller pitch sensitivity. |
| BC AMPLITUDE | Global breath controller amplitude sensitivity. |
| BC PITCH BIAS | Global breath controller pitch bias. |
| BC EG BIAS | Global breath controller EG bias. |
Patch Management
Banks
XCent has two types of banks:
ROM banks (100, 200, 300, 400): 96 original DX100 factory voices, read-only. These match the hardware's factory ROM exactly. Patch slots are numbered in the DX100 style: bank 100 contains patches 101–124, bank 200 contains 201–224, and so on.
RAM banks (A, B, C, D): 96 writable slots for your own patches (24 per bank). Patch slots are displayed as A 1–A24, B 1–B24, etc. RAM bank contents are automatically saved to disk when changed.
Saving a Patch
After editing:
- Click SAVE button in the patch browser (or right-click a slot → Save here)
- Select a destination RAM bank (A–D) and slot
- Enter a patch name (10 characters max, DX100 compatible)
- Click Save
ROM banks are read-only and cannot be overwritten. The red "dirty" indicator in the top bar disappears when changes are saved.
Favorites & Recents
- ★ Favorites — Click the star icon on any patch to add it to Favorites. Access via PLAY mode → Favorites view.
- 🕐 Recents — Automatically tracks the last 24 loaded patches. Access via PLAY mode → Recents view.
Drag and Drop
Patches can be reordered within a bank and moved between banks:
- Move: Click and drag from one slot to another
- Copy: Hold Shift while dragging
- Swap: Drag occupied slot onto another occupied slot
Dragging to a ROM bank slot is not permitted.
Rename & Delete
Right-click any patch slot in a RAM bank:
- Rename — Change patch name (10 chars max)
- Delete — Clear slot (confirmation required)
- Initialize — Reset slot to init patch (all parameters to default)
SysEx Import & Export
XCent is compatible with standard DX100 SysEx formats:
Export:
- Single voice (VCED) — Right-click patch → Export SysEx → saves as
.syxfile - Bank (VMEM) — Right-click bank header → Export Bank → saves 32 voices as
.syx
Import:
- Drag
.syxfile onto patch browser - Or right-click → Import SysEx → select
.syxfile
Imported bank dumps load into the first RAM bank (A). Compatible with hardware DX100 units and librarians:
- Dexed
- DX Manager
- Patch Base
- MIDI Quest
- Any DX100/DX21/DX27 compatible editor
MIDI
MIDI Channel
Plugin mode (VST3/CLAP): Responds to the MIDI channel configured in your DAW's instrument routing.
Standalone mode: Select MIDI channel in Settings → MIDI / Audio tab:
- Omni — Responds to all channels
- 1–16 — Responds only to the selected channel
Control Change (CC)
| CC | Function | Description |
|---|---|---|
| 1 | Mod Wheel | Adds to pitch/amp modulation per MW.P and MW.A settings |
| 2 | Breath Controller | Modulates pitch/amp/EG bias per BC.P, BC.A, BC.PB, BC.EB settings |
| 4 | Foot Controller | Expression (amplitude) |
| 5 | Portamento Time | Real-time control of portamento speed |
| 64 | Sustain Pedal | Hold notes (standard sustain behavior) |
| 65 | Portamento On/Off | Toggle portamento without using front panel |
Pitch Bend
Full-resolution 14-bit pitch bend. Range is set:
- Per-patch: P.BEND in EDIT mode (Patch section)
- Globally: P.BEND in FUNC mode
Default range is 2 semitones (±2). Maximum range is 12 semitones (±1 octave).
Velocity
Velocity sensitivity is controlled per-operator via KVS (Key Velocity Sensitivity) in EDIT mode:
- 0 — No velocity sensitivity (operator always at full level)
- 1–7 — Increasing velocity response (7 = maximum dynamic range)
Each operator can have independent velocity sensitivity. This allows, for example:
- Carrier with KVS=0 for constant level
- Modulator with KVS=7 for velocity-sensitive brightness
Program Change
Program Change messages (0–127) load patches from the active bank:
| Program | Patch |
|---|---|
| 0 | Slot 1 |
| 1 | Slot 2 |
| ... | ... |
| 23 | Slot 24 |
Bank Select (CC 0 / CC 32) switches banks before sending Program Change:
| Bank Select value | Bank |
|---|---|
| 0 | 100 (ROM) |
| 1 | 200 (ROM) |
| 2 | 300 (ROM) |
| 3 | 400 (ROM) |
| 4 | A (RAM) |
| 5 | B (RAM) |
| 6 | C (RAM) |
| 7 | D (RAM) |
Portamento
Two portamento modes (set via PORT MODE in FUNC mode):
- Full-time — Glide always active between consecutive notes
- Fingered — Glide only when notes overlap (legato playing)
Portamento time is controlled by:
- PORT TIME in FUNC mode (global)
- P.TIME in EDIT mode Patch section (per-patch)
- CC 5 (real-time MIDI control)
SysEx
XCent responds to and transmits standard DX100 SysEx messages over MIDI:
Receive:
- VCED (single voice dump) — Loads into edit buffer
- VMEM (32-voice bank dump) — Imports bank to RAM bank A
Transmit:
- VCED — Sends edit buffer on request from librarian
- VMEM — Sends current bank (32 voices) on request
SysEx exchange works bidirectionally with:
- Hardware DX100/DX21/DX27 units
- Software librarians (Dexed, DX Manager, etc.)
- Generic MIDI SysEx utilities
Settings
Click the ⚙ icon in the top bar to open Settings. Three tabs:
Sound
| Setting | Description |
|---|---|
| Engine Mode | Vintage (authentic — includes YM3014 DAC + NJM072D analog filter) or Modern (clean — bypasses analog stage for alias-free FM). |
| User Patches Folder | Location where RAM banks are stored. Default: platform-specific (see Installation). Click Browse to move it to a custom location (e.g., shared drive, project folder). |
Appearance
| Setting | Options | Description |
|---|---|---|
| Window Size | 100%, 125%, 150%, 175%, 200% | Plugin window scale. 100% = 800×600 px. Does not affect audio. |
| Skin | Dark, Light | Global color theme. Applies to all UI elements. |
| Matrix Display | Teal, OLED Blue | LCD display color. Teal = authentic DX100 LCD green. OLED Blue = modern blue OLED aesthetic. |
MIDI / Audio
| Setting | Description |
|---|---|
| MIDI Receive Channel | Omni (all channels) or 1–16 (specific channel). Plugin mode: use DAW routing. Standalone only. |
| Audio Device | (Standalone only) Output device selection + sample rate. |
| MIDI Input | (Standalone only) MIDI input device selection. Shows all available MIDI ports. |
Settings are saved automatically and persist across sessions.
FM Sound Design
XCent uses the same four-operator FM synthesis engine as the Yamaha DX100. Every parameter works identically to the hardware. If you know how to program a DX100, you know how to program XCent.
The Yamaha DX100 Owner's Manual is a thorough resource for FM synthesis theory and sound design technique. It applies directly to XCent.
XCent-Specific Features
XCent adds modern conveniences not available on the hardware:
- Undo/redo — Available via Ctrl+Z / Ctrl+Y (or Cmd+Z / Cmd+Shift+Z on macOS). Explore freely without fear.
- Visual Edit view — All parameters accessible simultaneously without sequential button navigation.
- Algorithm diagram — Visual operator routing updates in real time as you change ALG.
- Envelope display — Envelope shape updates live as you edit stages.
- Favorites & Recents — Quick access to frequently-used patches.
- On-screen keyboard — 49-key (C2–C6) keyboard with pitch and mod wheels. Play from the plugin window without a MIDI controller.
- Drag and drop — Reorder patches within and between RAM banks.
Authentic Hardware Behavior
XCent intentionally preserves the hardware's character:
FM aliasing: Native 55,930 Hz sample rate means sidebands fold back into the audible range. This is not a bug — it's the DX100 sound. Higher frequency ratios and feedback create brighter, noisier tones due to aliasing.
DAC quantization: YM3014 floating-point DAC (10-bit mantissa + 3-bit exponent) introduces subtle quantization artifacts at low levels. Audible as noise floor grain.
Reconstruction filter: NJM072D analog low-pass filter (-3 dB at ~10,600 Hz) with soft treble rolloff. Authentic DX100 warmth.
Integer signal path: All DSP computed at hardware bit widths (20-bit phase, 14-bit operators, 13-bit EG). No floating-point "cleaning" — bit-exact to the chip.
To bypass these characteristics: Set Engine Mode to Modern in Settings → Sound. This skips the analog output stage for clean, alias-free FM (still at 55,930 Hz native rate, but without DAC quantization or filter coloration).
Appendix
Algorithm Reference
XCent supports all eight DX100 FM algorithms. Each algorithm defines which operators are carriers (produce audible output) and which are modulators (shape carrier timbre).
Algorithm 1: Linear Stack
OP1 → OP2 → OP3 → OP4 → OUT
Four operators in series. Maximum modulation depth. Useful for complex, evolving timbres and aggressive, metallic sounds.
Algorithm 2: Three Modulators + Carrier
OP1 → OP2 → OP3 → OP4 → OUT
(OP4 is the sole carrier)
Three modulators feeding one carrier. Extreme timbral complexity. Good for bells, gongs, and dense harmonic content.
Algorithm 3: Dual Stacks
OP1 → OP2 → OUTOP3 → OP4 → OUT
Two independent 2-operator chains. Useful for layered sounds: bass + lead, pad + pad, dual timbres.
Algorithm 4: Two Modulators + Two Carriers
OP1 → OP2 → OUTOP3 → OUTOP4 → OUT
One modulated carrier + two pure carriers. Good for adding brightness or octaves to a modulated tone.
Algorithm 5: Two Carriers, Two Chains
OP1 → OP2 → OUTOP3 → OP4 → OUT
Two independent carriers, each with one modulator. Balanced complexity. Versatile for pads, leads, basses.
Algorithm 6: Three Independent Carriers + One Modulator
OP1 → OP2 → OUTOP3 → OUTOP4 → OUT
One modulated carrier + two pure carriers. Similar to Alg 4 but different routing. Useful for adding harmonics.
Algorithm 7: Three Carriers + One Modulated Pair
OP1 → OUTOP2 → OUTOP3 → OP4 → OUT
Three independent carriers: two pure, one modulated. Good for organ-like tones, stacked harmonics.
Algorithm 8: Four Independent Carriers
OP1 → OUTOP2 → OUTOP3 → OUTOP4 → OUT
Four sine waves (no modulation). Pure additive synthesis. Useful for organs, simple waveforms, tuned percussion.
Note: OP4 self-feedback is available in all algorithms. Set FBL > 0 to add harmonics, noise, or chaotic character.
Keyboard Shortcuts
| Action | Windows/Linux | macOS |
|---|---|---|
| Undo | Ctrl+Z | Cmd+Z |
| Redo | Ctrl+Y or Ctrl+Shift+Z | Cmd+Shift+Z |
| Save Patch | Ctrl+S | Cmd+S |
| Open Patch Browser | Ctrl+O | Cmd+O |
| Toggle On-Screen Keyboard | Ctrl+K | Cmd+K |
| Next Patch | → | → |
| Previous Patch | ← | ← |
| Mode: PLAY | F1 | F1 |
| Mode: EDIT | F2 | F2 |
| Mode: FUNC | F3 | F3 |
Known Issues
See bugs.md in the repository for current known issues and workarounds.
Support
Bug reports & feature requests: GitHub Issues
General questions: knivesonstrings@gmail.com
Website: knivesonstrings.com/xcent
Source code: github.com/Knives-On-Strings/xcent
XCent User Manual v0.9.1 — April 2026
© 2026 Knives On Strings. XCent is licensed under the MIT License.
For the most up-to-date version of this manual, visit knivesonstrings.com/xcent/manual.
