User Guide
Formfactor is a MIDI modulation workbench that analyzes incoming MIDI and outputs shaped CC messages. It observes your playing behavior and transforms it into continuous control signals for other instruments and effects.
AU v2 Note: In Logic Pro, load Formfactor as an Instrument (not an effect). Route MIDI to it and use its CC output to modulate hardware instruments or other plugins via MIDI learn.
Quick Start
Get up and running with Formfactor in five steps:
- Load Formfactor as a MIDI effect (or Instrument in Logic Pro)
- Route MIDI to Formfactor from your keyboard or sequencer
- Route Formfactor's MIDI output to a synthesizer or effect
- Enable one or more CC output lanes
- Play notes and watch CC values respond to your playing
What Formfactor Does
Formfactor sits between your MIDI source and your instruments. It passes through all incoming MIDI (notes, pitch bend, existing CCs) while generating additional CC messages based on analysis of your playing. Think of it as an intelligent MIDI processor that creates modulation from musical context.
Typical Use Cases
- Dynamic filter sweeps that respond to playing intensity
- Automatic expression that follows note density
- Rhythmic modulation via step sequencer
- Shaped LFO with 24 modulation shapes
- Hardware modulation for synths without built-in LFOs
Signal Flow
MIDI enters Formfactor from your DAW, where it is read across four dimensions. The original MIDI passes through unchanged while new CC messages are generated and merged into the output stream.
FORMFACTOR
┌───────────────────────────────────────────────────────────┐
│ │
│ ┌──────────┐ │
│ │ READER │ │
│ │ │ │
│ │ Temporal │ ┌─────────────┐ ┌───────────┐ │
│ │ Density │───▶│ Sequencer + │───▶│ Merge │ │
DAW ▶│ │ Velocity │ │ Shape LFO │ │ │ │▶ DAW /
│ │ Intensity│ └─────────────┘ │ Passthru │ │ External
│ └──────────┘ │ │ + │ │
│ ▲ │ │ New CCs │ │
MIDI │ │ ▼ └─────┬─────┘ │ MIDI
In │ │ ┌───────────┐ │ │ Out
────────┤ └────────▶│ 8 Lanes │────────────┘ ├────────
│ (notes, etc.) │ CC 1, 11 │ │
│ │ 74, 71... │ │
│ └───────────┘ │
└───────────────────────────────────────────────────────────┘
Each lane can be configured independently:
- CC number and channel for output routing
- Step sequencer with configurable trigger source
- Shape LFO with depth, rate, and mode controls
- Mode mutes to select which analyses affect the lane
GUI Overview
Formfactor's interface is organized into four main sections. Understanding where everything lives will help you navigate quickly.
The READER (Left Panel)
The analysis engine. Displays real-time readings from the four dimensions: Temporal, Density, Velocity, and Intensity. Global parameters that affect analysis behavior live here too.
Factor (Center)
The heart of Formfactor. This is where the 24 modulation shapes live. Select shapes for continuous LFO-style modulation, configure the step sequencer, and set timing parameters. Each of the 8 lanes has its own Factor settings.
CC OUTPUT (Right Panel)
Output configuration for each lane. Set the CC number, MIDI channel, base value, and mode mutes. This is where analysis becomes MIDI — the final stage before CC messages leave Formfactor.
Notebook (Top Right)
The clipboard system. Save and recall Factor configurations without using full DAW presets. Useful for A/B testing shapes or building a personal library of modulation patterns.
Global Controls
These parameters affect overall Formfactor behavior. The analysis parameters below are accessible in the READER panel.
Temporal Sensitivity (0-100%)
How quickly the Temporal Intelligence analysis responds to changes in playing. Higher values react faster to tempo variations; lower values provide more stable readings.
Density Window (50-2000 ms)
Time window for Event Density analysis. Shorter windows respond quickly to bursts of notes; longer windows average over more playing time.
Velocity Smoothing (0-100%)
Amount of smoothing applied to velocity tracking. At 0%, CC follows velocity changes immediately. At 100%, changes are heavily filtered for gradual transitions.
Intensity (0-127)
Initial energy level for the Intensity system. Higher values allow more sustained activity before energy depletion affects modulation.
CC Output Lanes
Formfactor provides 8 independent CC output lanes. Each lane generates a single CC message stream based on its configuration.
Default CC Assignments
Lanes start with commonly-used CC numbers:
- Lane 1: CC 1 (Mod Wheel)
- Lane 2: CC 11 (Expression)
- Lane 3: CC 74 (Filter Cutoff)
- Lane 4: CC 71 (Resonance)
- Lane 5: CC 73 (Attack Time)
- Lane 6: CC 72 (Release Time)
- Lane 7: CC 91 (Reverb Send)
- Lane 8: CC 93 (Chorus Send)
Change any lane's CC number to suit your target instrument.
Lane Selector
The numbered circles above the Factor display select and enable/disable lanes:
- Click: Select a lane for editing
- Double-click: Toggle lane enabled/disabled (mute)
Enabled lanes show green; disabled lanes show red. Disabled lanes don't output CC messages and consume no CPU.
Lane Parameters
Enable
Lane on/off state, controlled via the lane selector (double-click to toggle).
CC Number (0-127)
Which CC number this lane outputs. Standard assignments include 1 (Mod), 7 (Volume), 10 (Pan), 11 (Expression), 74 (Cutoff), 71 (Resonance).
Channel (1-16)
MIDI channel for CC output. Usually matches your instrument's receive channel.
Value (0-127)
Base CC value before analysis modulation. The final output combines this with the sequencer, LFO, and analysis results.
Step Sequencer
Each lane includes an 8-step sequencer that cycles through values based on a trigger source.
Trigger Sources
NoteOn
Advances to the next step on each MIDI note-on. Creates patterns that follow your melodic rhythm exactly.
Beat
Advances every beat (quarter note) synced to host tempo. Creates patterns locked to your project grid.
HalfBeat
Advances every half beat (eighth note). Twice as fast as Beat for more active patterns.
QuarterBeat
Advances every quarter beat (sixteenth note). Four times Beat speed for rapid sequences.
Step Values
Each step holds a value from 0-127. The sequencer outputs this value, which is then processed through the lane's modulation shape before combining with other modulation sources.
Sequencer Behavior
- Steps are numbered 1-8 and cycle continuously
- When a step advances, the output transitions smoothly to the new value using the lane's shape
- You can mute sequencer influence per-lane using Mode Mutes
Modulation Shapes
Formfactor includes 24 modulation shapes that define how the LFO sweeps through its cycle. Each shape has a distinct character, from smooth curves to chaotic patterns.
Shape Categories
Linear
- S01 Linear: Straight line from A to B. Constant rate of change.
Exponential
- S02 ExpIn: Slow start, accelerating finish. Natural fade-in feel.
- S03 ExpOut: Fast start, decelerating finish. Natural decay.
- S04 ExpIO: Slow at both ends, fast in middle. Smooth S-curve.
Circular
- S05 CircIn: Dramatic acceleration from standstill.
- S06 CircOut: Dramatic deceleration to stop.
- S07 CircIO: Circular ease at both ends.
Bloom
- S08 BloomIn: Gentle organic unfurling.
- S09 BloomOut: Soft organic settling.
- S10 BloomIO: Natural breathing motion.
S-Curve
- S11 SigmoidIn: Mathematical smooth start.
- S12 SigmoidOut: Mathematical smooth end.
- S13 SigmoidIO: Classic sigmoid curve.
Timing
- S14 Snap: Instant change. No interpolation.
- S15 Hold: Holds start value, then snaps at end.
- S16 Late: Delayed start, then catches up.
Bounce
- S17 BounceIn: Anticipation before movement.
- S18 BounceOut: Overshoot then settle back.
- S19 BounceIO: Bounce at both ends.
Chaos
- S20 Wobble: Oscillating approach to target.
- S21 Jitter: Noisy, unstable transition.
- S22 Drunk: Random walk toward target.
Direct
- S23 Stairs: Stepped quantization during transition.
- S24 Pulse: Spike to max then fall to target.
The READER
The READER continuously observes incoming MIDI across four dimensions. Each dimension produces a value from 0-127 that can modulate CC output.
Temporal Intelligence
Tracks the timing relationships between notes. Detects whether you're playing steady rhythms, accelerating, decelerating, or with rubato expression.
- Steady playing: Mid-range values (~64)
- Accelerating: Rising values toward 127
- Decelerating: Falling values toward 0
- Rubato/irregular: Fluctuating values
Use for: Filter sweeps that follow phrasing, effects that intensify with faster playing.
Event Density
Measures how many notes occur within the Density Window. Sparse playing produces low values; dense chords or rapid passages produce high values.
- Single notes: Low values (0-30)
- Moderate activity: Mid values (40-80)
- Dense chords/runs: High values (90-127)
Use for: Reverb send that opens up on solo notes, distortion that increases with intensity.
Velocity & Expression
Follows the velocity of incoming notes with configurable smoothing. Provides direct mapping from playing dynamics to CC output.
- Soft playing: Low CC values
- Hard playing: High CC values
- Smoothing: Prevents jumpy transitions between different velocities
Use for: Expression (CC 11), filter cutoff, any parameter that should track dynamics directly.
Intensity
A "stamina" system that depletes with activity and regenerates during rests. Creates natural tension and release curves over longer phrases.
- Fresh/rested: High values (near Intensity setting)
- After sustained activity: Depleted values
- During rests: Gradual regeneration
Use for: Modulation that "tires out" during long solos, effects that build and release over phrases.
Mode Mutes
Each lane can selectively ignore READER modes. This lets you create lanes that respond only to specific aspects of your playing.
Per-Lane Mutes
- Temporal Mute: Ignores Temporal Intelligence
- Density Mute: Ignores Event Density
- Velocity Mute: Ignores Velocity & Expression
- Intensity Mute: Ignores Intensity
- Sequencer Mute: Ignores step sequencer values
Use Cases
- Pure velocity tracking: Mute all except Velocity
- Sequencer-only: Mute all READER modes, use only sequencer
- Density-driven reverb: Mute Temporal, Velocity, Intensity; use only Density
- Intensity-aware expression: Mute Temporal, Density; combine Velocity and Intensity
Shape LFO
Each lane includes a tempo-synced Shape LFO that blends with the step sequencer output. The LFO uses one of 24 modulation shapes to define its waveform character.
Depth (0-100%)
Controls the blend between sequencer output and Shape LFO output:
- 0%: Output equals the sequencer value only
- 100%: Output equals the Shape LFO value only
- In between: Linear blend of both sources
Rate
Tempo-synced LFO cycle period:
- 1/4 beat: Fastest — one cycle per quarter beat
- 1/2 beat: One cycle per half beat
- 1 bar: One cycle per bar (default)
- 2 bars: One cycle every two bars
- 4 bars: One cycle every four bars
- 8 bars: Slowest — one cycle every eight bars
LFO Modes
Loop
The LFO runs continuously, synced to the transport position. Phase derives directly from beat position modulo the rate period. When transport stops, the LFO holds at its current phase.
Trig
The LFO waits idle at the end of its cycle. On each note-on, it resets to the start and advances over the rate period. After completing one cycle, it holds until the next note triggers it again. Use for per-note modulation envelopes.
Presets
Browsing Presets
The preset dropdown organizes configurations by use case. Click any preset name to load it instantly.
Factory Preset Categories
Starting Points
Minimal configurations for learning Formfactor. Single lanes with clear cause-and-effect relationships.
Expression
Velocity and dynamics-focused presets. Direct mappings from playing intensity to modulation.
Rhythmic
Sequencer-driven patterns. Step sequences synced to tempo for pulsing, gating, and rhythmic effects.
Evolving
Slowly-changing modulation from Intensity and Temporal analysis. Creates movement over longer time scales.
User Presets
Save your own configurations using your DAW's preset management or Formfactor's built-in preset system.
Preset Storage Location:
- macOS:
~/Library/Application Support/Aftertone & Signal/Formfactor/Presets/ - Windows:
%APPDATA%/Aftertone & Signal/Formfactor/Presets/ - Linux:
~/.config/aftertone-and-signal/formfactor/presets/
MIDI Routing
Formfactor needs MIDI input to analyze and MIDI output to send its generated CCs.
Input Requirements
- Note-on/off messages for analysis
- Velocity values for Velocity & Expression mode
- Transport position for tempo-synced triggers
Output Behavior
- Pass-through: All incoming MIDI is passed unchanged
- Generated CCs: New CC messages are added to the stream
- No conflicts: If your input already contains CC 74, Formfactor's CC 74 output will interleave (consider using different CC numbers)
DAW-Specific Routing
Ableton Live
- Insert Formfactor as a MIDI effect on a MIDI track
- Place it before your instrument
- MIDI flows through automatically
Bitwig Studio
- Add Formfactor to a track's device chain
- It automatically passes MIDI to downstream devices
- Use the built-in modulation system to route Formfactor's output
Logic Pro
- Load Formfactor as an Instrument (not effect)
- Create a second track with your target instrument
- Set the target track's MIDI input to Formfactor's output
- Route your keyboard to Formfactor's input
FL Studio
- Load Formfactor in a Patcher or as a MIDI effect
- Route MIDI from your controller to Formfactor
- Route Formfactor's output to your instrument
Automation & Hardware Control
All Formfactor parameters are exposed for DAW automation and MIDI mapping.
Useful Parameters to Automate
- Active Lanes: Bring lanes in/out during a song
- Lane Enable: Toggle specific lanes
- Lane CC Number: Change target parameter mid-song
- Sequencer Steps: Create evolving patterns
- Shape Selection: Different shapes for different sections
- LFO Depth/Rate: Build intensity over time
Hardware Control
Map physical knobs to Formfactor's parameters using your DAW's MIDI learn feature. Particularly useful mappings:
- LFO Depth on a knob for performance control
- Density Window to adjust response character
- Lane base Value for manual CC override
Tips & Techniques
Start Simple
- Begin with one lane and one analysis mode
- Mute all other modes to isolate the behavior
- Add complexity only after understanding each component
Velocity-Controlled Filter
- Lane 1: CC 74 (Cutoff)
- Mute all except Velocity
- Set Velocity Smoothing to 30-50%
- Hard notes open the filter; soft notes close it
Density-Driven Reverb
- Lane 1: CC 91 (Reverb Send)
- Mute all except Density
- Set Density Window to 500ms
- Solo notes get more reverb; dense passages stay dry
Rhythmic Pulsing
- Use sequencer with Beat or HalfBeat trigger
- Mute all analysis modes
- Set alternating high/low step values
- Choose S14 Snap shape for hard gates, S01 Linear for sweeps
Intensity-Aware Expression
- Lane 1: CC 11 (Expression)
- Enable Intensity and Velocity modes
- Set Intensity high (100+)
- Long phrases gradually lose intensity; rests restore it
Per-Note LFO Envelopes
- Set LFO Mode to Trig
- Choose S08 BloomIn for gentle attacks
- Or S18 BounceOut for plucky response
- Each note triggers a fresh modulation cycle
Parallel CC Lanes
- Multiple lanes can target the same CC
- Use different shapes and modes per lane
- Values combine for complex, layered modulation
Hardware Synth Modulation
- Route Formfactor's output to your hardware via MIDI interface
- Adds LFO shapes your hardware doesn't have natively
- Use Temporal mode for expression that follows your playing
Parameter Reference
Analysis Parameters
| Parameter | Range | Default | Description |
|---|---|---|---|
| Temporal Sensitivity | 0-100% | 50% | Temporal analysis response speed |
| Density Window | 50-2000 ms | 500 ms | Event density measurement window |
| Velocity Smoothing | 0-100% | 30% | Velocity tracking filter amount |
| Intensity | 0-127 | 100 | Initial energy level |
Lane Parameters (per lane)
| Parameter | Range | Default | Description |
|---|---|---|---|
| Enable | On/Off | On | Lane active state |
| CC Number | 0-127 | varies | Output CC number |
| Channel | 1-16 | 1 | Output MIDI channel |
| Value | 0-127 | 64 | Base CC value |
| Step 1-8 | 0-127 | varies | Sequencer step values |
| Trigger Source | NoteOn/Beat/HalfBeat/QuarterBeat | NoteOn | Sequencer advance trigger |
| Shape | S01-S24 | S01 | Modulation shape |
| LFO Depth | 0-100% | 0% | Blend between sequencer (0%) and LFO (100%) |
| LFO Rate | 1/4 beat to 8 bars | 1 bar | Tempo-synced cycle period |
| LFO Mode | Loop/Trig | Loop | LFO behavior |
| Temporal Mute | On/Off | Off | Ignore temporal analysis |
| Density Mute | On/Off | Off | Ignore density analysis |
| Velocity Mute | On/Off | Off | Ignore velocity analysis |
| Intensity Mute | On/Off | Off | Ignore intensity analysis |
| Sequencer Mute | On/Off | Off | Ignore sequencer values |
Formfactor v0.1.0
Aftertone & Signal
aftertone.co