Fixed self-written stack logic and replaced it with proper usage of stl.
Replace stack with queue. Some test cases rely on not reusing recently active voices, because they don't use NOTEOFF events properly, so sustain phase may interfere with the expected results. It is believed not to be the case for general playback workflow.
Introduce extensions files aka .muxt. These files are archives with additional data to extend MuseScore with soundfonts, templates, custom workspaces, etc.
Update qzip to fix bug with symlink.
Add extensions management to resource manager.
Make unification for Zerberus and Fluid GUI
Make logic for 'up' and 'down' arrows in Zerberus
Logic of adding SF in fluid are the same as zerberus
Create Progress Bar in Fluid
Removed hardcoded resonance.
Fix test after changing resonance calculation
Commented out test which tests sfz wav samples until I understand how to
record new (correct) reference
Implement bpf_2p, brf_2p, lpf_1p and hpf_1p filters.
Make refactoring: extract filter logic to separate class, make voice class simpler and easier. Optimize and fix code in applying filters.
- removed obsolete Score* _score from XmlReader
- removed not used variables
- added braces for initializer list
- fixed using similar var names in one scope
Found via `codespell -i 3 -w --skip="./thirdparty,./share/locale,./fonts" -I ../musescore-whitelist.txt`
Whitelist:
```
clas
nd
ot
pres
strack
tage
te
```
The old Preferences struct holding all preferences are removed in favor of a
new Preferences class which acts as a proxy for QSettings. The settings stored
in QSettings are accessed directly through access methods like getBool(key),
getInt(key), etc. and changed with setPreference(key, value).
Since we are using QSettings directly the preferences are stored automatically
without the need for a custom write() and read() method like before.
The preferences.cpp/.h and prefdialog.cpp/h are refactored to have fewer
responsibilities than before. The Preferences class are all about storing and
retrieving preferences - it should not contain any code to handle any other
aspect of MuseScore.
Testing:
The Preferences class can be used in tests. All preferences are initialized with
default values in mtest. If a test requires that a preference has a specific
value it can be changed using setPreference() for that single test. In the tests
the preferences are stored in memory only.
The Preference class is supposed to be used as a singleton. In preferences.h an
'extern Preferences preferences' is set and it is defined in preferences.cpp. All
files which includes preferences.h have access to the 'preferences' singleton
and should use this to get and set preferences.