There has been some talk on these forums and elsewhere of a small gap between note on and pressure being sent over midi. There are times in a synth patch where you want velocity to control the peak of a sharp attack but then hand over control to pressure for further volume shaping (e.g. to swell beyond the initial attack peak). In some cases, the 10ms gap where pressure is being read as 0 can be a problem. I think I've isolated the cause of this gap in the firmware and a fix for this, but I'd really love some feedback about whether my fix is appropriate!
Basically, as per the MPE standard, immediately before note on is sent, a pressure value of 0 is sent. This is handled by line 1258 in the sendNewNote function in ls_handleTouches.ino:
preSendLoudness(sensorSplit, 0, 0, sensorCell->note, sensorCell->channel);
For zero readings, this function skips the midi decimation timer (which rate limits the number of pressure messages sent per second) to ensure that it is guaranteed to be sent. However, sending this zero *starts* the decimation timer, which means that the next pressure value won't be sent until the rate limit has passed, basically guaranteeing that there will *always* be a gap between note on and the first pressure reading. There's a handy function already available to temporarily disable the rate limit by resetting the timer. So we can call that function directly after the line above, and the delay should be removed, so we add the following at line 1259:
preResetLastLoudness(sensorSplit, sensorCell->note, sensorCell->channel);
This works beautifully in my testing - the first real pressure reading is sent very quickly after note on. But this is my first attempt to edit the firmware, so would be keen to get any views on whether what I've done is sensible!
Cheers!
Simon
Possible fix for approx 10ms gap in pressure response after note on
Official support for: rogerlinndesign.com
Moderator: Roger Linn Design Mods
Possible fix for approx 10ms gap in pressure response after note on
2026-06-18T11:06:16+00:00
There has been some talk on these forums and elsewhere of a small gap between note on and pressure being sent over midi. There are times in a synth patch where you want velocity to control the peak of a sharp attack but then hand over control to pressure for further volume shaping (e.g. to swell beyond the initial attack peak). In some cases, the 10ms gap where pressure is being read as 0 can be a problem. I think I've isolated the cause of this gap in the firmware and a fix for this, but I'd really love some feedback about whether my fix is appropriate!
Basically, as per the MPE standard, immediately before note on is sent, a pressure value of 0 is sent. This is handled by line 1258 in the sendNewNote function in ls_handleTouches.ino:
preSendLoudness(sensorSplit, 0, 0, sensorCell->note, sensorCell->channel);
For zero readings, this function skips the midi decimation timer (which rate limits the number of pressure messages sent per second) to ensure that it is guaranteed to be sent. However, sending this zero *starts* the decimation timer, which means that the next pressure value won't be sent until the rate limit has passed, basically guaranteeing that there will *always* be a gap between note on and the first pressure reading. There's a handy function already available to temporarily disable the rate limit by resetting the timer. So we can call that function directly after the line above, and the delay should be removed, so we add the following at line 1259:
preResetLastLoudness(sensorSplit, sensorCell->note, sensorCell->channel);
This works beautifully in my testing - the first real pressure reading is sent very quickly after note on. But this is my first attempt to edit the firmware, so would be keen to get any views on whether what I've done is sensible!
Cheers!
Simon
simonkirby
https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=767488
-
- KVRer
- 5 posts since 27 Sep, 2025
Post by simonkirby »
Jump to
- The Main Forums
- ↳ KVR Studio Manager
- ↳ Getting Started (AKA What is the best...?)
- ↳ Instruments
- ↳ Effects
- ↳ Hosts & Applications (Sequencers, DAWs, Audio Editors, etc.)
- ↳ Guitars
- ↳ Mobile Apps and Hardware
- ↳ Soundware
- ↳ Samplers, Sampling & Sample Libraries
- ↳ Hardware (Instruments and Effects)
- ↳ Modular Synthesis
- ↳ Sound Design
- ↳ Production Techniques
- ↳ Music Theory
- ↳ Computer Setup and System Configuration
- ↳ DSP and Plugin Development
- ↳ DIY: Build it and they will come
- ↳ Music Cafe
- ↳ Sell & Buy (+Special Offers, Deals & Promos)
- ↳ KVR Experts
- ↳ KVR Developer Challenge 2026
- ↳ Everything Else (Music related)
- ↳ Off Topic
- ↳ Off Topic Classics
- ↳ Machine Learning and AI for Music Creation
- Official Company Forums
- ↳ 2getheraudio
- ↳ accSone
- ↳ Acon Digital
- ↳ AcousticsampleS
- ↳ AcousModules
- ↳ Agitated State
- ↳ AIR Music Technology
- ↳ AMG
- ↳ Ample Sound
- ↳ Antares Audio Technologies
- ↳ Apisonic Labs
- ↳ APU Software
- ↳ apulSoft
- ↳ AriesCode
- ↳ Arts Acoustic
- ↳ Arturia
- ↳ Audjoo
- ↳ AudioSpillage
- ↳ Audiority
- ↳ Best Service
- ↳ Big Tick
- ↳ Bitwig
- ↳ Controller Scripting
- ↳ Blue Cat Audio
- ↳ Cherry Audio
- ↳ CWITEC
- ↳ Embertone
- ↳ energyXT
- ↳ Eventide
- ↳ Expert Sleepers
- ↳ forward audio
- ↳ Future Audio Workshop
- ↳ FXpansion
- ↳ g200kg
- ↳ Harrison Mixbus
- ↳ HG Fortune
- ↳ Homegrown Sounds
- ↳ HoRNet Plugins
- ↳ Ilya Efimov Production
- ↳ Image Line
- ↳ Impact Soundworks
- ↳ Indiginus
- ↳ Insert Piz Here
- ↳ Ju-X
- ↳ Kirk Hunter Studios
- ↳ Kirnu
- ↳ Kong Audio
- ↳ Krotos
- ↳ Kuassa
- ↳ KV331 Audio
- ↳ LennarDigital
- ↳ Les Productions Zvon
- ↳ Liqube Audio
- ↳ Loomer
- ↳ LVC-Audio
- ↳ Maizesoft
- ↳ Manytone Music
- ↳ Media Overkill (MOK)
- ↳ MeldaProduction
- ↳ Mellowmuse
- ↳ MIDIMood
- ↳ moForte
- ↳ Mozaic Beats
- ↳ mucoder
- ↳ MusicDevelopments
- ↳ Tips & Tricks
- ↳ MusicLab
- ↳ MuTools
- ↳ New Sonic Arts
- ↳ NUSofting
- ↳ Oli Larkin Plugins
- ↳ Orange Tree Samples
- ↳ patchpool
- ↳ Photosounder
- ↳ PlugInGuru
- ↳ Polyverse Music
- ↳ Precisionsound
- ↳ Premier Sound Factory
- ↳ Psychic Modulation
- ↳ Realitone
- ↳ Resonance-Sound
- ↳ Reveal Sound
- ↳ Roger Linn Design
- ↳ rs-met
- ↳ S3A: Spatial Audio
- ↳ SaschArt
- ↳ Smart Electronix
- ↳ sonible
- ↳ SonicBirth
- ↳ Sonic Reality / eSoundz.com
- ↳ Soundiron
- ↳ SPC Plugins
- ↳ Sugar Bytes
- ↳ TAL Software
- ↳ Tokyo Dawn Labs
- ↳ Tracktion
- ↳ Tweakbench
- ↳ u-he
- ↳ u-he Linux support
- ↳ UJAM
- ↳ United Plugins
- ↳ VAZ Synths
- ↳ Virharmonic
- ↳ xoxos
- ↳ XSRDO - SynthCraft
- ↳ ZynAddSubFX
- Site Stuff
- ↳ Site Stuff
- Archived Forums
- ↳ AlgoMusic
- ↳ easytoolz
- ↳ Elevayta
- ↳ Hollow Sun
- ↳ LinPlug
- ↳ Muse Research and Development
- ↳ Shuriken
- ↳ SoHa Sound Design
- ↳ Soniccouture
- ↳ Topten Software
- ↳ Valhalla DSP
- ↳ CK Modules & VST
- ↳ Sennheiser AMBEO
- ↳ Muon Software
- ↳ Westgatesounds.net
- ↳ Squaredheads
- ↳ Sonigen
- ↳ CFA-Sound
- ↳ Back In Time Records
- ↳ Livelab.dk
- ↳ Skytopia
- ↳ audioD3CK
- ↳ Inspire Audio
- ↳ Krakli
- ↳ Drumdrops
- ↳ Futucraft
- ↳ OverTone DSP
- ↳ RaXnTraX
- ↳ solar3d-software
- ↳ Signaldust
- ↳ Soundemote
- ↳ ReleaseLab (Powered by Artist Expansion)
- ↳ Wolfgang Palm
- KVR Forum index
- All times are UTC
- Delete cookies
