MIDI Programming Tips

MIDI Programming Tips guide with tips and recommendations.

Updated 2025-12-20

MIDI Programming Tips

MIDI (Musical Instrument Digital Interface) is the language that allows music production software to communicate with synthesizers, samplers, and virtual instruments. Despite its decades-old specification, MIDI remains the backbone of modern music production. Mastering MIDI programming separates producers who create realistic, expressive performances from those whose productions sound robotic and lifeless. This comprehensive guide covers MIDI programming techniques, humanization approaches, and practical workflows that transform sequenced parts into genuine musical performances.

Overview

MIDI data captures information about notes (pitch, velocity, timing), as well as continuous controllers (modulation, expression, filter cutoff, and more). Unlike audio recording, MIDI is infinitely editable—you can adjust timing, velocity, pitch, or any parameter after the fact. This flexibility is MIDI's greatest strength and also its greatest pitfall: it's easy to create perfectly quantized, perfectly metronomic, perfectly lifeless performances. Understanding how to use MIDI's flexibility to create human, expressive performances is essential for professional music production.

Key Points

  • MIDI velocity variation is the single most important factor in creating realistic performances
  • Humanization (slight timing variations, note-length variations) separates human from mechanical performances
  • MIDI controllers (CC data) allow real-time parameter modulation and expression
  • Note timing and length are editable after recording, allowing perfect correction while maintaining performance feel
  • Different instruments require different MIDI programming approaches (strings vs. drums vs. synths require different humanization)
  • Swing and shuffle timing create groove and pocket rather than strict quantization
  • MIDI editing tools (tools for batch velocity editing, micro-timing adjustments, etc.) dramatically speed up workflow
  • Detailed Guide

    Understanding MIDI Basics

    MIDI data consists of several components: Note On/Off Events: Define when a note starts and stops
  • Pitch: Which note is being played (C3, D#4, G5, etc.)
  • Velocity: How hard the note is hit (0-127, where 0 is note-off, 1 is barely audible, 127 is maximum)
  • Timing: When the note occurs in the timeline
  • Duration: How long the note sustains
  • Controller Data (CC): Continuous parameters that change over time
  • CC1 (Modulation): Controls vibrato, brightness, or other parameters on synthesizers
  • CC7 (Volume): Controls the volume of a track
  • CC11 (Expression): Controls the dynamic expression of an instrument
  • CC64 (Sustain Pedal): Controls sustain on keyboards
  • CC74 (Filter Cutoff): Controls filter cutoff on synthesizers
  • Custom CCs allow control of any synthesizer parameter
  • Pitch Bend: Subtle pitch shifting, often used for expression Aftertouch: Pressure applied after striking a key Understanding these components is foundational to creating expressive MIDI performances.

    Velocity Variation: The Most Important Humanization Technique

    Velocity—how hard a note is struck—is the single most important factor in creating realistic MIDI performances. Human performers never hit keys with identical force. Varying velocity creates:
  • Realistic dynamics
  • Musical emphasis
  • Expressive variation
  • Appropriate stress on important notes
  • Typical velocity patterns (as percentages of maximum, 127): For melodic instruments (strings, brass, vocals):
  • Notes at phrase beginnings: 85-100% (emphasized)
  • Notes in middle of phrases: 70-85% (moderate)
  • Final notes of phrases: 60-75% (tapering off)
  • This creates natural phrasing that mimics breathing
  • For rhythmic instruments (drums, percussion):
  • Main beats (1 and 3): 95-100% (strong)
  • Secondary beats (2 and 4): 80-90% (moderate)
  • Off-beats/ghost notes: 50-70% (light)
  • This creates pocket and groove
  • For pads and sustained notes:
  • Often consistent velocity (90-100%) since the sound isn't dynamic
  • Variations can add expression when deliberately programmed
  • Practical workflow for adding velocity variation:
  • First, program all notes at identical velocity (e.g., 100)
  • Quantize timing to make notes rhythmically accurate
  • Now adjust velocities to create musicality
  • Identify the "important" notes (downbeats, melodic peaks, phrase starts)
  • Increase velocity on important notes to 90-100%
  • Reduce velocity on less important notes to 70-85%
  • Further reduce velocity on ghost notes or ornaments
  • Many DAWs allow velocity range adjustments across multiple notes simultaneously, speeding this process significantly.

    Timing Humanization: Creating Groove Through Micro-Timing

    While proper quantization is important for clarity, absolutely perfect quantization sounds mechanical. Subtle timing imperfections create groove. Types of timing variations: Swing and Shuffle: Intentional, consistent timing shifts that create groove
  • Traditional swing: Offbeat notes (e.g., the "and" of beats) are delayed by 15-30%
  • Shuffle: Similar but often with more dramatic offsets (40-60%)
  • Most DAWs have swing/shuffle parameters that apply this globally
  • Example in a drum pattern:
  • Straight quantization: Eighth-note hi-hats hit exactly on 0, 50, 100, 150, 200, 250, 300, 350 (millisecond timeline)
  • With 30% swing: Eighth-note hi-hats hit on 0, 70, 100, 170, 200, 270, 300, 370 (offbeats delayed by 20ms)
  • This creates a relaxed, groovy feel
  • Random micro-timing: Slight random variations that prevent mechanical feeling
  • Apply ±10-30 ms random timing variations to notes
  • Usually reduced for important notes, increased for texture notes
  • Creates human imperfection without obvious randomness
  • Intentional timing shifts: Some notes are slightly early or late for expression
  • A note rushed slightly (5-10 ms early) sounds anxious, urgent
  • A note delayed slightly (10-20 ms late) sounds relaxed, behind the beat
  • Used intentionally on specific notes creates character
  • Practical swing application:
  • Quantize all notes to the grid first (ensures clarity)
  • Apply global swing parameter (usually 50-70%)
  • Listen to the groove—does it feel natural?
  • Adjust swing percentage until it feels right
  • For some tracks, apply random micro-timing in addition to swing
  • Note Length and Sustain Variation

    Beyond velocity and timing, how long notes sustain matters significantly. Staccato vs. Legato:
  • Staccato notes: Short duration (typically 50-70% of the note value)
  • Legato notes: Longer duration (typically 90-100% of the note value)
  • Mixing these creates expressive variation
  • Example with half notes:
  • Staccato half note: Sustains for 25% of the half note duration (short, punchy)
  • Normal half note: Sustains for 75% of the half note duration
  • Legato half note: Sustains fully until the next note starts
  • Using different note lengths in a melody creates interest
  • Practical workflow:
  • Program all notes with consistent length (e.g., 90% of note value)
  • Identify articulation opportunities
  • Reduce length on staccato notes to 50-60%
  • Extend length on legato passages to full note duration
  • Create emphasis through note-length variation
  • Sustain pedal data: For piano or organ recordings, sustain pedal data (CC64) is crucial. Program sustain on held chords, release sustain before new chords. This creates realistic piano behavior.

    MIDI Controller Automation for Expression

    Beyond note data, MIDI controllers allow continuous parameter modulation creating expressive, evolving performances. Common controller uses: Modulation (CC1) on string instruments:
  • Start at 0 for the first 100 ms (no vibrato)
  • Gradually increase to 60-80 over the duration of the note
  • This creates realistic vibrato that develops over time
  • Expression (CC11) for dynamic evolution:
  • Start at 40-50 at note beginning
  • Gradually increase to 80-100 over the note duration
  • Creates a swelling, expressive performance
  • Filter Cutoff (CC74) on synthesizers:
  • Program filter to sweep open during pad sustains
  • Or decrease during release for darkening effect
  • Creates animation and movement in static sounds
  • Breath CC (CC2) on wind instruments:
  • Start high at note attack
  • Decrease slightly during sustain
  • Increase again at release
  • Mimics natural breath control of wind players
  • Practical implementation:
  • Identify which controller(s) serve your instrument
  • Create CC automation lane in your DAW
  • Draw CC data curves that create expression:
  • - For strings: modulation increasing over time - For pads: filter cutoff opening gradually - For wind: breath decreasing then increasing
  • Use smooth curves (not stepped values) for musical expression
  • Humanization by Instrument Type

    Different instruments require different humanization approaches: #### Drums and Percussion Kick drum:
  • Tight quantization (no timing variation)
  • Consistent velocity on main kicks
  • Slight velocity variation on swing kicks or ghost kicks
  • No note length variation (percussion doesn't sustain)
  • Snare drum:
  • Tight quantization on main snare hits
  • ±5-10 ms timing variation on ghost snares
  • Main snares: 90-100% velocity
  • Ghost snares: 30-50% velocity
  • Short note duration (10-20% of note value, drums cut off quickly)
  • Hi-hats:
  • Swing/shuffle on closed hi-hats
  • Open hi-hats often delayed slightly (10-20 ms late) for swing effect
  • Velocity: 80-90% for main hits, 60-75% for ghost notes
  • Note duration: Very short (5-15% of note value)
  • #### Strings and Pads Legato articulation:
  • Notes overlap (one note's release overlaps next note's attack)
  • Slight timing delays (10-30 ms) between notes create legato feel
  • CC1 (modulation) automation creating vibrato
  • Expression automation (CC11) creating dynamic swell
  • Long note duration (100-110% of notated value)
  • Pizzicato (plucked):
  • Tighter quantization than legato
  • Short note duration (40-60% of notated value)
  • Lower velocity overall (70-85%)
  • Less modulation automation
  • #### Melodic Instruments (Brass, Woodwinds, Lead Synths) Expressive approach:
  • Slight timing variations reflecting phrasing
  • Velocity emphasis on melodic peaks
  • CC1 (modulation) for vibrato development
  • CC2 (breath) or CC11 (expression) for dynamic shaping
  • Note length variation reflecting articulation (staccato vs. legato)
  • #### Bass Pocket feel:
  • Slight timing variations (+5 to -15 ms) on certain notes to sit behind or ahead of the beat
  • Consistent velocity on the root notes
  • Velocity variations on passing notes and fills
  • Note length: mostly consistent but occasionally staccato for articulation
  • Advanced MIDI Programming Techniques

    #### Swing Curves and Complex Timing Beyond simple swing, some producers use complex swing curves:
  • Different swing amounts for different note values (swing 16th notes at 40%, eighth notes at 30%)
  • Swing that changes over the course of the song (less swing in verses, more swing in choruses)
  • Intentional mis-quantization creating specific pockets
  • #### Arpeggio Programming Rather than playing chords as simultaneous notes, program them as arpeggio patterns:
  • Notes of a chord spread across 100-500 ms
  • Each note at slightly different velocity (lower velocity for earlier notes, higher for later)
  • Creates shimmer and movement in pad patterns
  • #### Polyrhythmic Layering Program multiple instruments with different swing/timing:
  • Drums in straight time (swing 0%)
  • Strings with 40% swing
  • Pads with 20% swing
  • Bass slightly behind the beat
  • Creates complex, evolving rhythm
  • #### Conditional Processing Use MIDI rules or tools to batch-adjust velocities based on criteria:
  • Reduce all velocities below a threshold by a percentage
  • Increase all first notes of phrases by a certain amount
  • Invert velocity (high velocities become low, vice versa)
  • These tools (common in advanced DAWs) speed up humanization dramatically
  • Quantization: Getting the Balance Right

    Quantization is snapping notes to the grid. The challenge is quantizing enough for clarity while maintaining human feel. Full quantization (100%):
  • Notes snap completely to the grid
  • Tight, precise timing
  • Can sound mechanical if not humanized
  • Good for: electronic music, heavily sequenced parts, specific stylistic choices
  • Soft quantization (50-75%):
  • Notes move partially toward the grid
  • Maintains some original timing variation
  • Sounds more human while staying mostly tight
  • Good for: most organic-sounding productions
  • No quantization (0%):
  • Original recorded/programmed timing preserved
  • Requires careful recording to be usable
  • Most human-sounding but riskier
  • Good for: capturing feel from live recording or intended timing imperfection
  • Workflow: Most producers use soft quantization (70-80%) as a middle ground—correcting obvious mistakes while preserving performance feel.

    Common MIDI Programming Mistakes

    All notes same velocity: The most obvious indicator of poor MIDI programming. Always vary velocity based on musicality. No swing on drums: Perfectly quantized drums sound stiff and unmusical. Almost all drum programming benefits from swing or shuffle. Too much humanization: Random micro-timing variations everywhere creates chaos. Reserve humanization for organic instruments; keep drums and electronic elements tighter. Ignoring note sustain/length: All notes held the same duration sounds unmusical. Vary note length based on articulation. Not using MIDI controllers: CC automation makes the difference between mechanical and expressive performances. Program modulation, expression, and other controllers intentionally. Over-quantizing everything: Tight quantization on every note removes all feel. Balance tight quantization on rhythm with looser humanization on melody. Forgetting to humanize the humanization: Even your humanization variations should have variation—not a consistent ±10 ms on every note, but 5 ms here, 15 ms there.

    MIDI Editing Tools and Workflow

    Modern DAWs include powerful MIDI editing tools: Piano Roll: Visual representation of MIDI notes allowing point-and-click editing of pitch, velocity, and timing. List Editor: Text-based MIDI editing for precise control. MIDI Quantize Tools: Batch quantization with soft/hard quantization options. Humanize Tools: Automatic humanization applying velocity and timing variations. Transpose/Transpose by Scale: Change pitch of notes while respecting musical scale. Select by: Select notes based on criteria (pitch, velocity range, timing) for batch operations. Velocity Ramp: Create velocity curves (gradually increasing or decreasing) across multiple notes. Time Shift: Move selected notes forward or backward in time. Effective workflow:
  • Record or program basic MIDI notes
  • Quantize to the grid (soft quantization, 70-80%)
  • Adjust pitches and durations to be musically correct
  • Apply global humanization (humanize tool) as starting point
  • Manually refine velocities based on musicality
  • Add swing/shuffle to drums and rhythmic elements
  • Program MIDI controller automation for expression
  • Compare to reference performances—adjust as needed
  • Recommendations for Professional MIDI Programming

  • Study MIDI of professional tracks: Export MIDI from professionally sequenced parts and study their velocity variations, timing, and controller data. Learn from how professionals approach humanization.
  • Record real performances when possible: Playing parts in real-time often produces more natural MIDI than careful programming. Combine live recording with manual refinement.
  • Use scale/key filters: Modern DAWs can restrict MIDI to specific scales. This prevents accidental wrong notes while allowing more expressive, less rigid programming.
  • Create custom humanization templates: Build humanization patterns (velocity curves, swing amounts, controller shapes) for different instrument types and save them for reuse.
  • Listen on multiple systems: MIDI expression that sounds good on headphones might be different on monitors. Verify your humanization decisions on multiple playback systems.
  • Compare constantly: Reference your MIDI parts to professional recordings of the same instruments. Are your velocity variations similar? Is your swing similar? Use these comparisons to refine your approach.
  • Document what works: Keep a journal of successful MIDI approaches for different instruments. Your own library of effective humanization becomes your reference.

  • Enjoyed this? Level up your production.

    Weekly gear deals, technique tips, and studio hacks, straight to your inbox.