I've been trying to design a modulation matrix for my synth and wondering on the best way to implement it, especially given that some modulation sources are synth-based (mod wheel, pitch bend, LFOs, etc) and some are voice-based (key, velocity, envelopes, etc).
I'm thinking that there would be an array of modulation slots...a slot being defined by:
Target(s)
Multiplier
Source1
Source2
It would seem that there needs to be a higher, synth-level object handling some of this, and still a voice-level object actually implementing it. And that's where it starts to sound somewhat messy.
I'm guessing that the synth-level sources would be rendered once per block and before each voice is rendered. But then rendering each voice would be a lot of ifs and switches because each slot could contain a combination of synth-level mod sources and voice-level mod sources.
It also seems like there could be duplicated info about the modulation slots in the synth object as well as all the voice objects. Maybe there's another way to think about this.
Any thoughts on how to possibly organize this in a somewhat neat and object oriented way?
Modulation matrix implementation strategies...
DSP, Plugin and Host development discussion.
Moderator: KVR Moderators (Main)
Modulation matrix implementation strategies...
2018-10-17T01:59:55+00:00
I've been trying to design a modulation matrix for my synth and wondering on the best way to implement it, especially given that some modulation sources are synth-based (mod wheel, pitch bend, LFOs, etc) and some are voice-based (key, velocity, envelopes, etc).
I'm thinking that there would be an array of modulation slots...a slot being defined by:
Target(s)
Multiplier
Source1
Source2
It would seem that there needs to be a higher, synth-level object handling some of this, and still a voice-level object actually implementing it. And that's where it starts to sound somewhat messy.
I'm guessing that the synth-level sources would be rendered once per block and before each voice is rendered. But then rendering each voice would be a lot of ifs and switches because each slot could contain a combination of synth-level mod sources and voice-level mod sources.
It also seems like there could be duplicated info about the modulation slots in the synth object as well as all the voice objects. Maybe there's another way to think about this.
Any thoughts on how to possibly organize this in a somewhat neat and object oriented way?
joshb
https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=377872
- KVRAF
- 8826 posts since 6 Jan, 2017 from Outer Space
- Contact:
Post by Tj Shredder » Wed Oct 17, 2018 7:28 am
In MPE at least pitch bend and cc74 is also voice based... Any cc could be voice based... In VST3 expressions are voice based... The MPE specs determine the voice by Midi channel, that way voice allocation is done by the controller...; - )
Post Reply
2 posts
• Page 1 of 1
Return to “DSP and Plugin Development”
Jump to
- The Main Forums
- ↳ KVR Studio Manager
- ↳ KVR Experts
- ↳ 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 Developer Challenge 2023
- ↳ Everything Else (Music related)
- ↳ Off Topic
- ↳ Off Topic Classics
- Official Company Forums
- ↳ 2getheraudio
- ↳ accSone
- ↳ Acon Digital
- ↳ AcousticsampleS
- ↳ AcousModules
- ↳ Agitated State
- ↳ AIR Music Technology
- ↳ AMG
- ↳ Ample Sound
- ↳ Antares Audio Technologies
- ↳ Apisonic Labs
- ↳ 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
- ↳ 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
- ↳ u-he
- ↳ u-he Linux support
- ↳ United Plugins
- ↳ VAZ Synths
- ↳ Virharmonic
- ↳ Wolfgang Palm
- ↳ xoxos
- ↳ XSRDO - SynthCraft
- ↳ ZynAddSubFX
- Site Stuff
- ↳ Site Stuff
- Archived Forums
- ↳ AlgoMusic
- ↳ easytoolz
- ↳ Elevayta
- ↳ Hollow Sun
- ↳ Kazrog
- ↳ LinPlug
- ↳ Muse Research and Development
- ↳ Shuriken
- ↳ SoHa Sound Design
- ↳ Soniccouture
- ↳ Topten Software
- ↳ Tweakbench
- ↳ 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
- KVR Forum index
- All times are UTC
- Delete cookies