summaryrefslogtreecommitdiffstats
path: root/src/effects/effectchainmanager.cpp
AgeCommit message (Collapse)Author
2018-10-18Removed EffectChainManager layerKshitij Gupta
- Removed the superfluous class `EffectChainManager` whose functionality is now shifted to `EffectsManager` - Updated EffectProcessor to fix the circular include problem during compilation NOTE: XML saving/loading of effects is broken and will be re-implemented in the new architecture
2018-10-18Consolidated EffectChain and EffectChainSlotkshitij98
- EffectChain and EffectChainSlot had no clear separation of responsibility - Had to keep the duplicated state in both the classes in sync and thus making it more susceptible to bugs NOTE: XML saving/loading of effects is broken and will be re-implemented in the new architecture
2018-05-01Merge remote-tracking branch 'upstream/master' into lv2_support2Daniel Schürmann
Conflicts: .travis.yml src/effects/effect.cpp src/effects/effect.h src/effects/effectchainmanager.h src/effects/effectinstantiator.h src/effects/effectmanifest.h src/effects/effectrack.cpp src/effects/native/autopaneffect.cpp src/effects/native/balanceeffect.cpp src/effects/native/biquadfullkilleqeffect.h src/effects/native/bitcrushereffect.cpp src/effects/native/echoeffect.cpp src/effects/native/echoeffect.h src/effects/native/filtereffect.cpp src/effects/native/flangereffect.cpp src/effects/native/loudnesscontoureffect.cpp src/effects/native/phasereffect.cpp src/effects/native/reverbeffect.cpp src/effects/native/threebandbiquadeqeffect.h src/engine/effects/engineeffect.cpp src/engine/effects/engineeffect.h src/mixxx.cpp src/preferences/dialog/dlgpreferences.cpp src/preferences/dialog/dlgpreferences.h src/test/metaknob_link_test.cpp src/test/nativeeffects_test.cpp
2018-04-03use isAdoptMetaknobValueEnabled and "[Effects]", "AdoptMetaknobValue"Daniel Schürmann
2018-04-01improve description of effect load metaknob behavior optionsBe
2018-03-31clarify function namesBe
2018-03-31Added [Effects] AdoptMetaknobPosition prefeences optionDaniel Schürmann
2017-12-21rename MasterOutputEffectRack to OutputEffectRackbe_
2017-12-19only apply master EQ to master output, not record/broadcast signalbe_
2017-12-10decouple EffectChainSlot creation from loading EffectChain to enginebe_
2017-12-06code cleanupbe_
2017-06-30fix master equalizer effectbe_
This was broken by splitting the EffectRacks into prefader and postfader groups. To fix this, create a special postfader MasterEffectRack for the master EQ. Perhaps it could be useful to add other effects to this special MasterEffectRack in the future.
2017-06-20Merge remote-tracking branch 'upstream/master' into postfader_effectsbe_
2017-06-15Merge remote-tracking branch 'upstream/master' into lv2_support2Daniel Schürmann
Conflicts: src/effects/effectsmanager.cpp
2017-06-15treat <EffectChain\> entries as null (ejected) chainsDaniel Schürmann
2017-06-13track enable state of effects & chains for each input and outputbe_
This is required to send the intermediate enabling/disabling states for every combination of input and output. Previously, when an effect was processed on multiple channels, only one of them would get the disabling signal when turned off. This caused the Echo effect to play the sound last stored in its buffer when it was disabled with multiple inputs going to it. Echo's buffer would be cleared for only one of the input channels.
2017-06-13Merge remote-tracking branch 'upstream/pr/1275' into postfader_effectsbe_
EngineEffect creation and loading of saved state on startup need to be decoupled so the saved state can be loaded after all input and output channels have been registered in the engine.
2017-06-10apply effects to both master output post-fader and headphones PFLbe_
This required two major changes to the effects system: 1. Making effects track their internal state for each input going to each output, instead of sharing a state only for each input. 2. Splitting the single combined effects input/output buffer into a separate input and output buffer. TODO: fix signal path tests
2017-06-04treat unnamed chains in effects.xml as ejectedDaniel Schürmann
2017-06-04Initalise chain slots before loading effects.xmlDaniel Schürmann
2017-04-26Refresh loaded effects if Parameter/Slot asignement has changed in LV2 prefsDaniel Schürmann
2017-04-18make sure effect chains are initialized properlybe_
if effects.xml is a valid XML file but does not contain enough <EffectChain> elements
2017-02-11toXML -> toXmlbe_
2017-02-06save effect XML schema version as attribute of root elementbe_
2017-01-19move effect XML element names to separate header filebe_
2017-01-19version effects.xml on its own terms instead of by Mixxx versionbe_
2017-01-19define a constant for the number of effectsbe_
2017-01-19add Mixxx version to effects.xmlbe_
2017-01-19save/load effect parameter state to XML on shutdown/startupbe_
2017-01-19implement effect saving to/loading from XMLbe_
2016-01-24Use UserSettings (typedef) instead of ConfigObject.RJ Ryan
This will allow us to experiment with different implementations for structured user preferences. It will also reduce repeated typing of template arguments and better represent the purpose of the object.
2015-02-26Move src/xmlparse.cpp/h to src/util/xml.cpp/h.RJ Ryan
2015-02-24Naming refactors.RJ Ryan
* Update GroupEffectProcessor, native effects and related code to refer to channels instead of groups. * Change most ChannelHandleAndGroup variables to be named handle_group to hint that it's a pair-like object.
2015-02-24Refactor use of strings in the engine. 10-20% callback speed improvement.RJ Ryan
* Add ChannelHandle, a wrapper class for an integer handle that starts at 0 and increments. * Add ChannelHandleFactory for assigning integer handles to group strings. * Add ChannelHandleMap, an associative container mapping ChannelHandle to a template data type T. Backed by a QVarLengthArray with a pre-allocation of 256. Supports fast O(1) lookups (simple memory indexing) and amortized O(1) inserts. * Re-factor engine and effects code to use ChannelHandle. * Update EffectProcessor to use ChannelHandleMap instead of QHash. * Update EngineEffectChain to use ChannelHandleMap instead of QLinkedList. I did two tests -- one with effects inactive and one with effects active. I measured total-callback processing time improvements of 20% (1 track, no effects) and 13% (2 tracks, effects enabled). From this I conclude that the QHash and QLinkedList introduced tons of wasted cycles (which agrees with my profiling results from a month or two ago). Test 1: * No effects active * optimize=portable * single track playing for 1 minute * began sampling 20 seconds in to get rid of the load-track jitters Base: Debug [Main]: Stat("SoundDevicePortAudio::callbackProcess prepare 1, Built-in Output","count=45014,sum=3.82151e+09ns,average=84896ns,min=26393ns,max=429257ns,variance=9.41766e+08ns^2,stddev=30688.2ns") Experiment: Debug [Main]: Stat("SoundDevicePortAudio::callbackProcess prepare 1, Built-in Output","count=44856,sum=3.02069e+09ns,average=67342ns,min=20400ns,max=323169ns,variance=5.93287e+08ns^2,stddev=24357.5ns") Results: Minimum: reduced by 22.7% Maximum: reduced by 24.7% Average: reduced by 20.7% StdDev: reduced by 20.6% Test 2: * One effect active on [Master]. * One effect active on [Channel1] * optimize=portable * two tracks playing for 1 minute * began sampling 20 seconds in to get rid of the load-track jitters Base: Debug [Main]: Stat("SoundDevicePortAudio::callbackProcess prepare 1, Built-in Output","count=44937,sum=4.76277e+09ns,average=105988ns,min=38434ns,max=326061ns,variance=1.49815e+09ns^2,stddev=38706ns") Experiment: Debug [Main]: Stat("SoundDevicePortAudio::callbackProcess prepare 1, Built-in Output","count=45191,sum=4.15799e+09ns,average=92009.3ns,min=31693ns,max=333664ns,variance=1.11131e+09ns^2,stddev=33336.3ns") Results: Minimum: reduced by 17.5% Maximum: increase by 0.02% Average: reduced by 13.2% StdDev: reduced by 13.9%
2014-11-21Unify rack/chain/effect/parameter association logic for effect widgets.RJ Ryan
Add support for associating with rack and effect unit by group.
2014-11-21Refactor equalizer rack and quick effect rack.RJ Ryan
* Create dedicated EqualizerRack, QuickEffectRack, and StandardEffectRack classes. * Move all per-rack initialization into a method of the sub-class. * Share common code between EqualizerRack and QuickEffectRack with a PerGroupRack parent class. * Move group formatting methods for rack, chain, and effect to the rack sub-type class. * Keep a strong reference to racks in DlgPrefEq to protect pointer usage and eliminate assumptions that the pointer exists. * Remove filterDepth / filter CO aliases.
2014-11-20Changed namespace for the preferences effect Racks to EqualizerChain and ↵Daniel Schürmann
QuickEffectChain
2014-11-19Allow to set the group for a rackDaniel Schürmann
2014-11-18Removed unused member variables from effectparameterslotbase.Daniel Schürmann
2014-06-19Dynamic creation of EQ (each time a deck is added)Nicu Badescu
2014-03-29Turn off a bunch of noisy debugs.RJ Ryan
2014-03-16Add in-order processing of effect chains in their racks.RJ Ryan
This introduces the concept of racks into the engine.
2014-03-16Introduce the concept of EffectChain prototypes.RJ Ryan
When loading a chain into a chain slot, the chain is cloned. This allows loading the same chain into multiple effect units at once.
2014-01-12Emit updated signals on clear and other misc fixes.RJ Ryan
2013-12-17Add quick and dirty EffectChain / Effect / EffectParameter XML ↵RJ Ryan
serialization/de-serialization support.
2013-12-02Add EffectRack to wrap EffectChainSlots and contain logic related to effect ↵RJ Ryan
racks.
2013-12-01Fix goofy initialization order requirements for EffectChains by making them ↵RJ Ryan
send all their existing state right after being added to the engine.
2013-11-30Send an ADD_EFFECT_CHAIN message when one is added.RJ Ryan
2013-06-19Merge branch 'master' into features_effectsRJ Ryan
Conflicts: res/skins/Outline1024x600-Netbook/keylock-off-Ch1.png res/skins/Outline1024x600-Netbook/keylock-off-Ch2.png res/skins/Outline1024x600-Netbook/keylock-on-Ch1.png res/skins/Outline1024x600-Netbook/keylock-on-Ch2.png