diff -Nru yoshimi-2.2.1/Changelog yoshimi-2.2.2.1/Changelog
--- yoshimi-2.2.1/Changelog 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/Changelog 2022-09-14 22:56:29.000000000 +0000
@@ -1,4 +1,66 @@
-yoshimi 2.2.1
+yoshimi 2.2.2.1
+
+2022-9-12 Will
+bn2156
+* Applied riscV64 patch from debian.
+* Changed text 'distorsion' to 'distortion' in code.
+ debian was reporting this as 'spelling error in binary'
+* Set bugfix release 2.2.2.1
+
+2022-9-8 Will
+bn2155
+* BugFix: disabling a part in the panel window marked the main window
+ as disabled when that was pointed to a different part.
+
+2022-9-1 Will
+bn2154
+* Updated meta-data
+* Updated HTML guide
+* Set release version 2.2.2
+
+2022-8-29 Kristian
+bn2153-a
+* Removed redundant (time wasting) code from LV2.
+
+2022-8-27 Will
+bn2153
+* Re-ordered retry attempts in MusicClient.cpp to avoid occasional lockups.
+
+2022-8-21 Will
+bn2152
+* Split harmonicPhaseBandwidth label
+ SubSynth -> harmonicBandwidth
+ Add/PadSynth -> harmonicPhase
+
+2022-8-20 Kristian
+bn2151a
+* BugFix: phase randomness not recognised by modulators.
+
+2022-8-17 Will
+bn2151
+* Fixed MIDI-learn regressions.
+ Settings saved, but not received.
+* Suppressed clang compliler warnings.
+* Doc updates.
+
+bn2150 (branch tempeff)
+* Effect control labels now taken back out of inserts and
+ as a group now sit immediately above kit numbers.
+
+2022-8-16 Will
+bn2149
+* Increased size of char array to suppress compiler warnings.
+* Changed direct comparison to strcmp( to suppress compiler warnings.
+* Commented out #include to suppress compiler warnings.
+
+2022-8-12 Will
+bn2148
+* Attempt to improve EQ graph display.
+* Small code cleanups and doc corrections.
+
+2022-8-4 Will
+bn2147
+* Minor GUI updates.
2022-7-25 Will
bn2146
diff -Nru yoshimi-2.2.1/debian/changelog yoshimi-2.2.2.1/debian/changelog
--- yoshimi-2.2.1/debian/changelog 2022-07-26 23:12:23.000000000 +0000
+++ yoshimi-2.2.2.1/debian/changelog 2022-09-16 18:55:42.000000000 +0000
@@ -1,9 +1,32 @@
-yoshimi (2.2.1-1ppa1~jammy) jammy; urgency=low
+yoshimi (2.2.2.1-2ppa1~jammy) jammy; urgency=low
- * New upstream minor release 2.2.1
+ * Yoshimi anniversary version 2.2.2
+ * upstream bugfix version 2.2.2.1
+ * bump Debian-Standard to v4.6.1 (no changes required)
* Rebuild/Backport for Ubuntu Jammy(22.04 LTS)
* unofficial DEB package by Ichthyostega
+ -- Hermann Vosseler Fri, 16 Sep 2022 20:55:42 +0200
+
+yoshimi (2.2.2.1-1) unstable; urgency=medium
+
+ * New upstream version 2.2.2.1
+ (Closes: #1019471)
+
+ -- IOhannes m zmölnig (Debian/GNU) Mon, 12 Sep 2022 23:39:18 +0200
+
+yoshimi (2.2.2-1) unstable; urgency=medium
+
+ * New upstream version 2.2.2
+
+ -- IOhannes m zmölnig (Debian/GNU) Tue, 06 Sep 2022 22:10:41 +0200
+
+yoshimi (2.2.1-1~buster) Lumiera-buster-tool; urgency=low
+
+ * New upstream minor release 2.2.1
+ * Rebuild/Backport for Debian/Buster(oldstable).
+ * unofficial DEB package by Ichthyostega
+
-- Hermann Vosseler Wed, 27 Jul 2022 01:12:23 +0200
yoshimi (2.2.0-1~buster) Lumiera-buster-tool; urgency=low
diff -Nru yoshimi-2.2.1/debian/control yoshimi-2.2.2.1/debian/control
--- yoshimi-2.2.1/debian/control 2022-07-26 23:06:52.000000000 +0000
+++ yoshimi-2.2.2.1/debian/control 2022-09-16 18:55:42.000000000 +0000
@@ -28,7 +28,7 @@
pkg-config,
sharutils,
zlib1g-dev,
-Standards-Version: 4.6.0
+Standards-Version: 4.6.1
Rules-Requires-Root: no
Vcs-Git: https://github.com/Ichthyostega/yoshimi.git -b deb
Homepage: https://yoshimi.sourceforge.io
diff -Nru yoshimi-2.2.1/debian/copyright yoshimi-2.2.2.1/debian/copyright
--- yoshimi-2.2.1/debian/copyright 2022-07-26 23:06:52.000000000 +0000
+++ yoshimi-2.2.2.1/debian/copyright 2022-09-15 00:06:01.000000000 +0000
@@ -4,91 +4,28 @@
Source: https://sourceforge.net/projects/yoshimi/files/
Files: *
-Copyright: 2009-2011, Alan Calvert
- 2014, Andrew Deryabin
- 2009, James Morris
- 2002-2009, Nasca Octavian Paul and others
- 2014-2021, Will Godfrey & others
-License: GPL-2+
-
-Files: src/DSP/*
- src/Effects/*
- src/Interface/Data2Text.cpp
- src/Interface/Data2Text.h
- src/Interface/InterChange.cpp
- src/Interface/InterChange.h
- src/Interface/MidiDecode.cpp
- src/Interface/MidiDecode.h
- src/Interface/MidiLearn.cpp
- src/Interface/MidiLearn.h
- src/Interface/RingBuffer.h
- src/Misc/Bank.cpp
- src/Misc/Bank.h
- src/Misc/Config.h
- src/Misc/FileMgrFuncs.h
- src/Misc/Microtonal.cpp
- src/Misc/Microtonal.h
- src/Misc/Part.cpp
- src/Misc/Part.h
- src/Misc/RandomGen.h
- src/Misc/Splash.cpp
- src/Misc/Splash.h
- src/Misc/SplashPngHex
- src/Misc/SynthEngine.cpp
- src/Misc/SynthEngine.h
- src/Misc/WavFile.cpp
- src/Misc/WavFile.h
- src/Misc/WaveShapeSamples.h
- src/Misc/XMLwrapper.cpp
- src/Misc/XMLwrapper.h
- src/Params/*
- src/Synth/*
- src/UI/ADnoteUI.fl
- src/UI/BankUI.fl
- src/UI/ConfigUI.fl
- src/UI/DynamicTooltip.cpp
- src/UI/DynamicTooltip.h
- src/UI/EffUI.fl
- src/UI/EnvelopeUI.fl
- src/UI/FilterUI.fl
- src/UI/LFOUI.fl
- src/UI/MasterMiscUI.fl
- src/UI/MicrotonalUI.fl
- src/UI/MidiLearnUI.fl
- src/UI/MiscGui.cpp
- src/UI/MiscGui.h
- src/UI/OscilGenUI.fl
- src/UI/PADnoteUI.fl
- src/UI/PartUI.fl
- src/UI/PresetsUI.fl
- src/UI/ResonanceUI.fl
- src/UI/SUBnoteUI.fl
- src/UI/VirKeyboardUI.fl
- src/UI/WidgetMWSlider.cpp
- src/UI/WidgetMWSlider.h
- src/UI/WidgetPDial.cpp
- src/UI/WidgetPDial.h
- src/globals.h
-Copyright: 2009-2011, Alan Calvert
+Copyright: 2002-2009, Nasca Octavian Paul and others
+ 2009-2011, Alan Calvert
2009, James Morris
2012-2013, Jeremy Jongepier and others
+ 2013, Nikita Zlobin
+ 2016, Rob Couto
2017, Jesper Lloyd
- 2002-2009, Nasca Octavian Paul and others
- 2016, Rob Couto & Will Godfrey
- 2014-2021, Will Godfrey and others
-License: LGPL-2+
+ 2014, Andrew Deryabin
+ 2014-2022, Will Godfrey & others
+License: GPL-2+
Files: debian/*
Copyright: 2010-2011, Alessio Treglia
2010-2017, Jaromír Mikeš
2019, Olivier Humbert
- 2020-2021, Dennis Braun
+ 2020-2022, Dennis Braun
License: GPL-2+
Files: src/UI/ParametersUI.fl
src/UI/VectorUI.fl
Copyright: 2011, Alan Calvert
- 2014-2021, Will Godfrey
+ 2014-2022, Will Godfrey
License: GPL-3+
Files: banks/Drums/0004-Natural?Drum?Kit.xiz
@@ -97,18 +34,6 @@
Copyright: 2012, Dario Straulino
License: GPL-3
-Files: src/Misc/Config.cpp
- src/UI/MasterUI.fl
-Copyright: 2009-2011, Alan Calvert
- 2014, Andrew Deryabin
- 2003-2004, Benno Senoner and Christian Schoenebeck
- 2005-2008, Christian Schoenebeck
- 2017, Jesper Lloyd
- 2002-2009, Nasca O. PAUL and others
- 2013, Nikita Zlobin
- 2014-2021, Will Godfrey & others
-License: GPL-2+ or LGPL-2+
-
Files: Util/YoshimiSplash.svg
Copyright: 2006, Arun Kulshreshtha
License: CC-BY-4.0
diff -Nru yoshimi-2.2.1/debian/patches/fix_privacy_breach_in_index_html.patch yoshimi-2.2.2.1/debian/patches/fix_privacy_breach_in_index_html.patch
--- yoshimi-2.2.1/debian/patches/fix_privacy_breach_in_index_html.patch 2022-07-26 23:10:35.000000000 +0000
+++ yoshimi-2.2.2.1/debian/patches/fix_privacy_breach_in_index_html.patch 2022-09-15 00:16:01.000000000 +0000
@@ -8,7 +8,7 @@
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/doc/yoshimi_user_guide/index.html b/doc/yoshimi_user_guide/index.html
-index 5456c5b..1035bea 100644
+index ed3459d..3e533a6 100644
--- a/doc/yoshimi_user_guide/index.html
+++ b/doc/yoshimi_user_guide/index.html
@@ -4,7 +4,7 @@
diff -Nru yoshimi-2.2.1/debian/watch yoshimi-2.2.2.1/debian/watch
--- yoshimi-2.2.1/debian/watch 2022-07-26 23:06:52.000000000 +0000
+++ yoshimi-2.2.2.1/debian/watch 2022-09-14 23:06:05.000000000 +0000
@@ -1,3 +1,3 @@
version=4
-opts="uversionmangle=s/-/./,dversionmangle=s/~dfsg0.*//,repacksuffix=~dfsg0" \
-https://github.com/Yoshimi/yoshimi/releases .*/v?(\d[\d\.]+)\.tar\.gz
+opts=filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/yoshimi-$1\.tar\.gz/ \
+https://github.com/Yoshimi/yoshimi/tags .*/v?(\d[\d\.]+)\.tar\.gz
diff -Nru yoshimi-2.2.1/debian/yoshimi.lintian-overrides yoshimi-2.2.2.1/debian/yoshimi.lintian-overrides
--- yoshimi-2.2.1/debian/yoshimi.lintian-overrides 2022-07-26 23:06:52.000000000 +0000
+++ yoshimi-2.2.2.1/debian/yoshimi.lintian-overrides 2022-09-14 23:06:05.000000000 +0000
@@ -1,11 +1,13 @@
# I can't find these spelling errors in source code using grep tool.
# So overriding them.
-spelling-error-in-binary usr/bin/yoshimi AfE Safe
-spelling-error-in-binary usr/bin/yoshimi CONTROLL CONTROL
-spelling-error-in-binary usr/bin/yoshimi defaulH default
-spelling-error-in-binary usr/bin/yoshimi ment meant
-spelling-error-in-binary usr/bin/yoshimi pres press
-spelling-error-in-binary usr/lib/lv2/yoshimi.lv2/yoshimi_lv2.so AfE Safe
-spelling-error-in-binary usr/lib/lv2/yoshimi.lv2/yoshimi_lv2.so CONTROLL CONTROL
-spelling-error-in-binary usr/lib/lv2/yoshimi.lv2/yoshimi_lv2.so defaulH default
-spelling-error-in-binary usr/lib/lv2/yoshimi.lv2/yoshimi_lv2.so ment meant
+spelling-error-in-binary CONTROLL CONTROL [usr/lib/lv2/yoshimi.lv2/yoshimi_lv2.so]
+spelling-error-in-binary TeH The [usr/bin/yoshimi]
+spelling-error-in-binary TeH The [usr/lib/lv2/yoshimi.lv2/yoshimi_lv2.so]
+spelling-error-in-binary buil build [usr/bin/yoshimi]
+spelling-error-in-binary buil build [usr/lib/lv2/yoshimi.lv2/yoshimi_lv2.so]
+spelling-error-in-binary controlL control [usr/bin/yoshimi]
+spelling-error-in-binary defaulH default [usr/bin/yoshimi]
+spelling-error-in-binary defaulH default [usr/lib/lv2/yoshimi.lv2/yoshimi_lv2.so]
+spelling-error-in-binary ment meant [usr/bin/yoshimi]
+spelling-error-in-binary ment meant [usr/lib/lv2/yoshimi.lv2/yoshimi_lv2.so]
+spelling-error-in-binary pres press [usr/bin/yoshimi]
diff -Nru yoshimi-2.2.1/desktop/metainfo/yoshimi.appdata.xml yoshimi-2.2.2.1/desktop/metainfo/yoshimi.appdata.xml
--- yoshimi-2.2.1/desktop/metainfo/yoshimi.appdata.xml 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/desktop/metainfo/yoshimi.appdata.xml 2022-09-14 22:56:29.000000000 +0000
@@ -7,6 +7,7 @@
Yoshimi
A Software Synthesizer for Linux
+ https://a.fsdn.com/allura/p/yoshimi/icon?1652648963
Yoshimi is a MIDI software synthesizer for Linux. It synthesizes in real time, can run polyphonic and/or monophonic in multiple simultaneous patches in one or more MIDI channels and has broad microtonal capability. It includes extensive additive, subtractive, and PAD synth capabilities which can be run simultaneously within the same patch. It also has comprehensive effects capabilities.
@@ -28,7 +29,7 @@
-
+
yoshimi
@@ -49,10 +50,14 @@
- AudioVideo
Audio
Midi
- Synthesiser
+ Music
+
+ Synthesizer
+ Softsynth
+
https://sourceforge.net/projects/yoshimi/
+ http://yoshimi.github.io/docs/user-guide/
diff -Nru yoshimi-2.2.1/desktop/yoshimi.1 yoshimi-2.2.2.1/desktop/yoshimi.1
--- yoshimi-2.2.1/desktop/yoshimi.1 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/desktop/yoshimi.1 2022-09-14 22:56:29.000000000 +0000
@@ -1,4 +1,4 @@
-.TH yoshimi 1 " 2022" "yoshimi 2.2.1"
+.TH yoshimi 1 " 2022" "yoshimi 2.2.2"
.SH NAME
yoshimi \- a software music synthesiser
.SH SYNOPSIS
diff -Nru yoshimi-2.2.1/desktop/yoshimi.desktop.in yoshimi-2.2.2.1/desktop/yoshimi.desktop.in
--- yoshimi-2.2.1/desktop/yoshimi.desktop.in 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/desktop/yoshimi.desktop.in 2022-09-14 22:56:29.000000000 +0000
@@ -1,14 +1,14 @@
[Desktop Entry]
Name=Yoshimi
-Comment=Real Time Synthesizer
-Comment[fr]=Synthétiseur temps-réel
GenericName=Synthesizer
GenericName[fr]=Synthétiseur
+Comment=Real Time Synthesizer
+Comment[fr]=Synthétiseur temps-réel
+Icon=yoshimi
Type=Application
-Categories=Music;Midi;AudioVideo;X-Sound;Audio;X-Multitrack;X-Alsa;X-Jack;
-Keywords=music;synthesiser;softsynth;microtonal;multichannel;midi;alsa;jack;realtime;standalone;lv2;
Exec=yoshimi
TryExec=yoshimi
Terminal=false
StartupNotify=true
-Icon=yoshimi
+Categories=Music;Midi;AudioVideo;X-Sound;Audio;X-Multitrack;X-Alsa;X-Jack;
+Keywords=music;synthesiser;softsynth;microtonal;multichannel;midi;alsa;jack;realtime;standalone;lv2;
diff -Nru yoshimi-2.2.1/dev_notes/Effect_Inserts.txt yoshimi-2.2.2.1/dev_notes/Effect_Inserts.txt
--- yoshimi-2.2.1/dev_notes/Effect_Inserts.txt 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/dev_notes/Effect_Inserts.txt 2022-09-14 22:56:29.000000000 +0000
@@ -8,7 +8,7 @@
2 Time (duration of effect)
3 Delay
4 Delay feedback
-5 {reserved}
+5 Bandwidth (only got bandwidth type)
6 {reserved}
7 Low pass filter
8 High pass filter
diff -Nru yoshimi-2.2.1/dev_notes/GUI_Interpretations.txt yoshimi-2.2.2.1/dev_notes/GUI_Interpretations.txt
--- yoshimi-2.2.1/dev_notes/GUI_Interpretations.txt 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/dev_notes/GUI_Interpretations.txt 2022-09-14 22:56:29.000000000 +0000
@@ -38,7 +38,7 @@
Effects and effect sources.
In 'part' we use 0xf1 for system effects and 0xf2 for insertion effects. For these and normal part effects, 'kit' ORed with 0x80 is used to denote the effect type (reverb echo etc.) and 'engine' is used to denote the number of the effect being worked on (the limit depends on the effect source). As 'kit' and 'engine' are not relevant for effects it is safe to use them here.
-Effects 'kit' numbers offset by 0x80.
+Effects 'kit' numbers offset by 0x10.
0 None
1 Reverb
Binary files /tmp/tmpzlnra6pi/kG4fNlB85h/yoshimi-2.2.1/dev_notes/Yoshimi Control Numbers.ods and /tmp/tmpzlnra6pi/NGkmrLBC0c/yoshimi-2.2.2.1/dev_notes/Yoshimi Control Numbers.ods differ
Binary files /tmp/tmpzlnra6pi/kG4fNlB85h/yoshimi-2.2.1/doc/Histories.tar.bz2 and /tmp/tmpzlnra6pi/NGkmrLBC0c/yoshimi-2.2.2.1/doc/Histories.tar.bz2 differ
diff -Nru yoshimi-2.2.1/doc/Yoshimi_2.2.1_features.txt yoshimi-2.2.2.1/doc/Yoshimi_2.2.1_features.txt
--- yoshimi-2.2.1/doc/Yoshimi_2.2.1_features.txt 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/doc/Yoshimi_2.2.1_features.txt 1970-01-01 00:00:00.000000000 +0000
@@ -1,27 +0,0 @@
-Version 2.2.1
-
-There is a useful addition of a reset button in the part edit window. This sets the instrument to the default in the same way as the instrument instrument drop menu down does, but is more convenient.
-
-Also for both of these methods, if you hold down the ctrl key it will then offer to clear the entire part instead, i.e. controllers, aftertouch etc. The confirmation message has also been updated so that you know exactly which of these actions is about to be performed.
-
-There are more windows that now stay open when you change parts and update in place. These are the part Edit window itself, Kit, Effects, Controllers, MIDI CCs, Aftertouch. All of these will also reopen if they were visible when Yoshimi was last closed.
-
-If the main window has focus, the Escape key action has been disabled. This is so you don't accidentally drop right out of Yoshimi.
-
-Two new instruments have been added to the banks, 'Ride' in Drums and 'Nostagia' in Synth.
-
-The user guide and various docs have been updated.
-
-There are also a number of code improvements and a few bug fixes.
-
-Yoshimi source code is available from either:
-https://sourceforge.net/projects/yoshimi
-Or:
-https://github.com/Yoshimi/yoshimi
-
-Full build instructions are in 'INSTALL'.
-
-Our list archive is at:
-https://www.freelists.org/archive/yoshimi
-To post, email to:
-yoshimi@freelists.org
diff -Nru yoshimi-2.2.1/doc/Yoshimi_2.2.2_features.txt yoshimi-2.2.2.1/doc/Yoshimi_2.2.2_features.txt
--- yoshimi-2.2.1/doc/Yoshimi_2.2.2_features.txt 1970-01-01 00:00:00.000000000 +0000
+++ yoshimi-2.2.2.1/doc/Yoshimi_2.2.2_features.txt 2022-09-14 22:56:29.000000000 +0000
@@ -0,0 +1,17 @@
+Version 2.2.2
+
+There are also a number of code improvements and a some bug fixes. Also the reproted metadata has been expanded.
+
+The user guide and various docs have been updated.
+
+Yoshimi source code is available from either:
+https://sourceforge.net/projects/yoshimi
+Or:
+https://github.com/Yoshimi/yoshimi
+
+Full build instructions are in 'INSTALL'.
+
+Our list archive is at:
+https://www.freelists.org/archive/yoshimi
+To post, email to:
+yoshimi@freelists.org
diff -Nru yoshimi-2.2.1/doc/yoshimi_user_guide/files/yoshimi_user_guide_version yoshimi-2.2.2.1/doc/yoshimi_user_guide/files/yoshimi_user_guide_version
--- yoshimi-2.2.1/doc/yoshimi_user_guide/files/yoshimi_user_guide_version 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/doc/yoshimi_user_guide/files/yoshimi_user_guide_version 2022-09-14 22:56:29.000000000 +0000
@@ -1 +1 @@
-2.2.1
\ No newline at end of file
+2.2.2.1
\ No newline at end of file
diff -Nru yoshimi-2.2.1/doc/yoshimi_user_guide/index.html yoshimi-2.2.2.1/doc/yoshimi_user_guide/index.html
--- yoshimi-2.2.1/doc/yoshimi_user_guide/index.html 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/doc/yoshimi_user_guide/index.html 2022-09-14 22:56:29.000000000 +0000
@@ -8,7 +8,7 @@
- The Yoshimi User Guide V2.2.1
+ The Yoshimi User Guide V2.2.2
diff -Nru yoshimi-2.2.1/doc/yoshimi_user_guide/mlearn/mlearn.html yoshimi-2.2.2.1/doc/yoshimi_user_guide/mlearn/mlearn.html
--- yoshimi-2.2.1/doc/yoshimi_user_guide/mlearn/mlearn.html 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/doc/yoshimi_user_guide/mlearn/mlearn.html 2022-09-14 22:56:29.000000000 +0000
@@ -27,7 +27,12 @@
Mute This completely disables this line only. Bear in mind that if it had been blocking later lines, that will no longer be the case.
- CC The incoming CC to respond to. In the case of NRPNs this is presented as two hexadecimal 7bit values.
+ CC The incoming CC to respond to. In the case of NRPNs this is presented as two hexadecimal 7bit values. As well as these, there are three channel mode messages that are learnable and reported as pseudo CCs:
+
+ 128 - Pitch bend
+ 129 - Channel Aftertouch
+ 130 - Key Aftertouch
+
Chan A drop-down menu to select the incoming channel to recognise. The last entry allows all channels to be effective for this line.
@@ -44,7 +49,7 @@
Note:
- You can have up to 400 learned lines, and multiple lines can respond to the same CC/Channel pair but performing completely different actions.
+ You can have up to 400 learned lines, and multiple lines can respond to the same CC/Channel pair but performing completely different actions. Also you can change the Channel numbers and CC at a late date to suit different control sources.
(buttons)
diff -Nru yoshimi-2.2.1/README.txt yoshimi-2.2.2.1/README.txt
--- yoshimi-2.2.1/README.txt 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/README.txt 2022-09-14 22:56:29.000000000 +0000
@@ -1,17 +1,8 @@
-Version 2.2.1
+Version 2.2.2
-There are just a few useful variations to the way
-Yoshimi is controlled in this minor release.
+This is just a minor bugfix and general update release.
-A new 'reset' button in the part edit window.
-
-More windows stay open when you change parts.
-
-Two new instruments have been added to the default banks.
-
-Some doc updates and bugfixes.
-
-Full details are in /doc/Yoshimi_2.2.1_features.txt
+Full details are in /doc/Yoshimi_2.2.2_features.txt
Yoshimi source code is available from either:
https://sourceforge.net/projects/yoshimi
diff -Nru yoshimi-2.2.1/src/CLI/CmdInterpreter.cpp yoshimi-2.2.2.1/src/CLI/CmdInterpreter.cpp
--- yoshimi-2.2.1/src/CLI/CmdInterpreter.cpp 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/CLI/CmdInterpreter.cpp 2022-09-14 22:56:29.000000000 +0000
@@ -254,14 +254,14 @@
}
nFXtype = readControl(synth, 0, ctl, section, UNUSED, nFX);
result += (" eff " + asString(nFX + 1) + " " + fx_list[nFXtype].substr(0, 6));
- nFXpreset = readControl(synth, 0, EFFECT::control::preset, section, (TOPLEVEL::insert::none | 128) + nFXtype, nFX);
+ nFXpreset = readControl(synth, 0, EFFECT::control::preset, section, EFFECT::type::none + nFXtype, nFX);
if (bitTest(context, LEVEL::InsFX) && readControl(synth, 0, EFFECT::sysIns::effectDestination, TOPLEVEL::section::systemEffects, UNUSED, nFX) == -1)
result += " Unrouted";
else if (nFXtype > 0 && nFXtype != 7)
{
result += ("-" + asString(nFXpreset + 1));
- if (readControl(synth, 0, EFFECT::control::changed, section, (TOPLEVEL::insert::none | 128) + nFXtype, nFX))
+ if (readControl(synth, 0, EFFECT::control::changed, section, EFFECT::type::none + nFXtype, nFX))
result += "?";
}
return result;
@@ -1020,7 +1020,7 @@
else
all = input.matchnMove(1, "all");
if (!all)
- msg.push_back(" effect presets");
+ msg.push_back(" EFFECT presets");
for (int i = 0; i < 9; ++ i)
{
presetsPos = 1;
@@ -1205,7 +1205,7 @@
if (selected == EFFECT::control::frequency && value == -1)
{
input.skipChars();
- value = freqBPMset(input, readControl(synth, 0, EFFECT::control::bpm, effClass, (TOPLEVEL::insert::none | 128) + nFXtype, nFX));
+ value = freqBPMset(input, readControl(synth, 0, EFFECT::control::bpm, effClass, EFFECT::type::none + nFXtype, nFX));
if (value < 0)
return REPLY::done_msg; // error already reported
}
@@ -1221,7 +1221,7 @@
if (selected == EFFECT::control::frequency && value == -1)
{
input.skipChars();
- value = freqBPMset(input, readControl(synth, 0, EFFECT::control::bpm, effClass, (TOPLEVEL::insert::none | 128) + nFXtype, nFX));
+ value = freqBPMset(input, readControl(synth, 0, EFFECT::control::bpm, effClass, EFFECT::type::none + nFXtype, nFX));
if (value < 0)
return REPLY::done_msg; // error already reported
}
@@ -1252,7 +1252,7 @@
if (selected == EFFECT::control::frequency && value == -1)
{
input.skipChars();
- value = freqBPMset(input, readControl(synth, 0, EFFECT::control::bpm, effClass, (TOPLEVEL::insert::none | 128) + nFXtype, nFX));
+ value = freqBPMset(input, readControl(synth, 0, EFFECT::control::bpm, effClass, EFFECT::type::none + nFXtype, nFX));
if (value < 0)
return REPLY::done_msg; // error already reported
}
@@ -1283,7 +1283,7 @@
if (selected == EFFECT::control::frequency && value == -1)
{
input.skipChars();
- value = freqBPMset(input, readControl(synth, 0, EFFECT::control::bpm, effClass, (TOPLEVEL::insert::none | 128) + nFXtype, nFX));
+ value = freqBPMset(input, readControl(synth, 0, EFFECT::control::bpm, effClass, EFFECT::type::none + nFXtype, nFX));
if (value < 0)
return REPLY::done_msg; // error already reported
}
@@ -1356,7 +1356,7 @@
if (selected == EFFECT::control::frequency && value == -1)
{
input.skipChars();
- value = freqBPMset(input, readControl(synth, 0, EFFECT::control::bpm, effClass, (TOPLEVEL::insert::none | 128) + nFXtype, nFX));
+ value = freqBPMset(input, readControl(synth, 0, EFFECT::control::bpm, effClass, EFFECT::type::none + nFXtype, nFX));
if (value < 0)
return REPLY::done_msg; // error already reported
}
@@ -1395,7 +1395,7 @@
value = string2int(input);
}
//cout << "Val " << value << " type " << controlType << " cont " << selected << " part " << context << " efftype " << int(nFXtype) << " num " << int(nFX) << endl;
- return sendNormal(synth, 0, value, controlType, selected, effClass, (TOPLEVEL::insert::none | 128) + nFXtype, nFX);
+ return sendNormal(synth, 0, value, controlType, selected, effClass, EFFECT::type::none + nFXtype, nFX);
}
// Continue cos it's not for us.
}
@@ -1475,7 +1475,7 @@
partno = TOPLEVEL::section::insertEffects;
else
partno = TOPLEVEL::section::systemEffects;
- return sendNormal(synth, 0, nFXpreset, controlType, EFFECT::control::preset, partno, (TOPLEVEL::insert::none | 128) + nFXtype, nFX);
+ return sendNormal(synth, 0, nFXpreset, controlType, EFFECT::control::preset, partno, EFFECT::type::none + nFXtype, nFX);
}
return REPLY::op_msg;
}
@@ -1833,7 +1833,7 @@
bool isDyn = false;
if (bitTest(context, LEVEL::AllFX) && nFXtype == 8)
{
- kit = TOPLEVEL::insert::dynFilter | 128;
+ kit = EFFECT::type::dynFilter;
engine = 0;
if (bitTest(context, LEVEL::InsFX))
{
@@ -2393,7 +2393,7 @@
if (input.matchnMove(1, "banks")
|| (bitFindHigh(context) == LEVEL::Bank && (input.isAtEnd() || input.isdigit())))
{
- if (input.isAtEnd() | !input.isdigit())
+ if (input.isAtEnd() || !input.isdigit())
ID = 128;
else
ID = string2int(input);
@@ -4353,7 +4353,7 @@
}
else if (input.matchnMove(1, "bandwidth"))
{
- insert = TOPLEVEL::insert::harmonicPhaseBandwidth;
+ insert = TOPLEVEL::insert::harmonicBandwidth;
set = true;
}
if (set)
@@ -5006,7 +5006,7 @@
if (input.matchnMove(1, "amp"))
insert = TOPLEVEL::insert::harmonicAmplitude;
else if (input.matchnMove(1, "phase"))
- insert = TOPLEVEL::insert::harmonicPhaseBandwidth;
+ insert = TOPLEVEL::insert::harmonicPhase;
if (input.lineEnd(controlType))
return REPLY::value_msg;
diff -Nru yoshimi-2.2.1/src/CMakeLists.txt yoshimi-2.2.2.1/src/CMakeLists.txt
--- yoshimi-2.2.1/src/CMakeLists.txt 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/CMakeLists.txt 2022-09-14 22:56:29.000000000 +0000
@@ -52,7 +52,7 @@
#add_definitions(-Wno-deprecated)
# ^^^ comment these out on release pushes
-set (YOSHIMI_VERSION "2.2.1")
+set (YOSHIMI_VERSION "2.2.2.1")
add_definitions (-DMIN_CONFIG_MAJOR=2)
add_definitions (-DMIN_CONFIG_MINOR=0)
@@ -464,6 +464,10 @@
target_link_libraries (yoshimi ${ARGP_LIB})
endif ()
+if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "riscv64")
+ target_link_libraries (yoshimi atomic)
+endif ()
+
install (TARGETS yoshimi RUNTIME DESTINATION bin)
install (DIRECTORY ../banks DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/yoshimi
diff -Nru yoshimi-2.2.1/src/Effects/EffectMgr.cpp yoshimi-2.2.2.1/src/Effects/EffectMgr.cpp
--- yoshimi-2.2.1/src/Effects/EffectMgr.cpp 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/Effects/EffectMgr.cpp 2022-09-14 22:56:29.000000000 +0000
@@ -4,7 +4,7 @@
Original ZynAddSubFX author Nasca Octavian Paul
Copyright (C) 2002-2009 Nasca Octavian Paul
Copyright 2009-2011, Alan Calvert
- Copyright 2017-2019, Will Godfrey
+ Copyright 2017-2022, Will Godfrey
This file is part of yoshimi, which is free software: you can redistribute
it and/or modify it under the terms of the GNU General Public
@@ -35,7 +35,7 @@
efxoutr{size_t(_synth->buffersize)},
insertion{insertion_},
filterpars{NULL},
- nefx{TOPLEVEL::insert::none},
+ nefx{0}, // type none resolves to zero internally
dryonly{false},
efx{}
{
@@ -48,7 +48,7 @@
void EffectMgr::defaults(void)
{
- changeeffect(TOPLEVEL::insert::none);
+ changeeffect(0); // type none resolves to zero internally
setdryonly(false);
}
@@ -60,37 +60,37 @@
if (nefx == _nefx)
return;
nefx = _nefx;
- switch (nefx)
+ switch (nefx + EFFECT::type::none)
{
- case TOPLEVEL::insert::reverb:
+ case EFFECT::type::reverb:
efx.reset(new Reverb{insertion, efxoutl.get(), efxoutr.get(), synth});
break;
- case TOPLEVEL::insert::echo:
+ case EFFECT::type::echo:
efx.reset(new Echo{insertion, efxoutl.get(), efxoutr.get(), synth});
break;
- case TOPLEVEL::insert::chorus:
+ case EFFECT::type::chorus:
efx.reset(new Chorus{insertion, efxoutl.get(), efxoutr.get(), synth});
break;
- case TOPLEVEL::insert::phaser:
+ case EFFECT::type::phaser:
efx.reset(new Phaser{insertion, efxoutl.get(), efxoutr.get(), synth});
break;
- case TOPLEVEL::insert::alienWah:
+ case EFFECT::type::alienWah:
efx.reset(new Alienwah{insertion, efxoutl.get(), efxoutr.get(), synth});
break;
- case TOPLEVEL::insert::distortion:
+ case EFFECT::type::distortion:
efx.reset(new Distorsion{insertion, efxoutl.get(), efxoutr.get(), synth});
break;
- case TOPLEVEL::insert::eq:
+ case EFFECT::type::eq:
efx.reset(new EQ{insertion, efxoutl.get(), efxoutr.get(), synth});
break;
- case TOPLEVEL::insert::dynFilter:
+ case EFFECT::type::dynFilter:
efx.reset(new DynamicFilter{insertion, efxoutl.get(), efxoutr.get(), synth});
break;
@@ -181,7 +181,7 @@
memset(efxoutr.get(), 0, synth->sent_bufferbytes);
efx->out(smpsl, smpsr);
- if (nefx == TOPLEVEL::insert::eq)
+ if (nefx == (EFFECT::type::eq - EFFECT::type::none))
{ // this is need only for the EQ effect
memcpy(smpsl, efxoutl.get(), synth->sent_bufferbytes);
memcpy(smpsr, efxoutr.get(), synth->sent_bufferbytes);
@@ -282,7 +282,7 @@
void EffectMgr::getfromXML(XMLwrapper *xml)
{
- changeeffect(xml->getpar127("type", geteffect()));
+ changeeffect(xml->getpar127("type", geteffect())); // not convinced this is OK?
if (!efx || !geteffect())
return;
changepreset(xml->getpar127("preset", efx->Ppreset));
@@ -324,47 +324,47 @@
float LimitMgr::geteffectlimits(CommandBlock *getData)
{
- int effType = getData->data.kit & 127;
+ int effType = getData->data.kit;
float value = 0;
switch (effType)
{
- case TOPLEVEL::insert::none:
+ case EFFECT::type::none:
value = 0;
break;
- case TOPLEVEL::insert::reverb:
+ case EFFECT::type::reverb:
Revlimit reverb;
value = reverb.getlimits(getData);
break;
- case TOPLEVEL::insert::echo:
+ case EFFECT::type::echo:
Echolimit echo;
value = echo.getlimits(getData);
break;
- case TOPLEVEL::insert::chorus:
+ case EFFECT::type::chorus:
Choruslimit chorus;
value = chorus.getlimits(getData);
break;
- case TOPLEVEL::insert::phaser:
+ case EFFECT::type::phaser:
Phaserlimit phaser;
value = phaser.getlimits(getData);
break;
- case TOPLEVEL::insert::alienWah:
+ case EFFECT::type::alienWah:
Alienlimit alien;
value = alien.getlimits(getData);
break;
- case TOPLEVEL::insert::distortion:
+ case EFFECT::type::distortion:
Distlimit dist;
value = dist.getlimits(getData);
break;
- case TOPLEVEL::insert::eq:
+ case EFFECT::type::eq:
EQlimit EQ;
value = EQ.getlimits(getData);
break;
- case TOPLEVEL::insert::dynFilter:
+ case EFFECT::type::dynFilter:
Dynamlimit dyn;
value = dyn.getlimits(getData);
break;
default:
- value = TOPLEVEL::insert::count - TOPLEVEL::insert::none;
+ value = EFFECT::type::count - EFFECT::type::none;
break;
}
return value;
diff -Nru yoshimi-2.2.1/src/globals.h yoshimi-2.2.2.1/src/globals.h
--- yoshimi-2.2.1/src/globals.h 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/globals.h 2022-09-14 22:56:29.000000000 +0000
@@ -210,7 +210,6 @@
enum control : unsigned char {
// insert any new entries here
-
/*
* the following values must never appear in any other sections
*/
@@ -230,19 +229,7 @@
// inserts are here as they are split between many
// sections but must remain distinct.
enum insert : unsigned char {
- none = 0,
- reverb,
- echo,
- chorus,
- phaser,
- alienWah,
- distortion,
- eq,
- dynFilter,
- // any new effects should go here
- count, // this must be the last type!
-
- LFOgroup, // 10
+ LFOgroup = 0,
filterGroup,
envelopeGroup,
envelopePointAdd,
@@ -250,12 +237,13 @@
envelopePointChange,
oscillatorGroup,
harmonicAmplitude,
- harmonicPhaseBandwidth, // this should be split in two
+ harmonicPhase,
+ harmonicBandwidth,
resonanceGroup,
resonanceGraphInsert,
systemEffectSend,
partEffectSelect,
- kitGroup //23
+ kitGroup
};
enum insertType : unsigned char {
@@ -1088,6 +1076,20 @@
effectDestination, // insert only
effectEnable // system only
};
+
+ enum type : unsigned char { // sits above part kits
+ none = NUM_KIT_ITEMS,
+ reverb,
+ echo,
+ chorus,
+ phaser,
+ alienWah,
+ distortion,
+ eq,
+ dynFilter,
+ // any new effects should go here
+ count, // this must be the last type!
+ };
}
/*
diff -Nru yoshimi-2.2.1/src/Interface/Data2Text.cpp yoshimi-2.2.2.1/src/Interface/Data2Text.cpp
--- yoshimi-2.2.1/src/Interface/Data2Text.cpp 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/Interface/Data2Text.cpp 2022-09-14 22:56:29.000000000 +0000
@@ -135,7 +135,7 @@
return "Nothing to redo!";
}
- if ((effSend >= (TOPLEVEL::insert::none | 128) && effSend <= (TOPLEVEL::insert::dynFilter | 128)) || (control >= PART::control::effectNumber && control <= PART::control::effectBypass && effSend == UNUSED))
+ if ((effSend >= EFFECT::type::none && effSend < EFFECT::type::count) || (control >= PART::control::effectNumber && control <= PART::control::effectBypass && effSend == UNUSED))
{
commandName = resolveEffects(getData, addValue);
return withValue(commandName, type, showValue, addValue, value);
@@ -182,7 +182,7 @@
case TOPLEVEL::insert::harmonicAmplitude:
commandName = resolveOscillator(synth, getData, addValue);
break;
- case TOPLEVEL::insert::harmonicPhaseBandwidth:
+ case TOPLEVEL::insert::harmonicPhase:
commandName = resolveOscillator(synth, getData, addValue);
break;
case TOPLEVEL::insert::resonanceGroup:
@@ -205,7 +205,7 @@
case TOPLEVEL::insert::harmonicAmplitude:
commandName = resolveSub(getData, addValue);
break;
- case TOPLEVEL::insert::harmonicPhaseBandwidth:
+ case TOPLEVEL::insert::harmonicBandwidth:
commandName = resolveSub(getData, addValue);
break;
case TOPLEVEL::insert::filterGroup:
@@ -254,7 +254,7 @@
case TOPLEVEL::insert::harmonicAmplitude:
commandName = resolveOscillator(synth, getData, addValue);
break;
- case TOPLEVEL::insert::harmonicPhaseBandwidth:
+ case TOPLEVEL::insert::harmonicPhase:
commandName = resolveOscillator(synth, getData, addValue);
break;
}
@@ -2198,7 +2198,7 @@
int value_int = int(value);
- if (insert == TOPLEVEL::insert::harmonicAmplitude || insert == TOPLEVEL::insert::harmonicPhaseBandwidth)
+ if (insert == TOPLEVEL::insert::harmonicAmplitude || insert == TOPLEVEL::insert::harmonicBandwidth)
{
string Htype;
if (insert == TOPLEVEL::insert::harmonicAmplitude)
@@ -2603,7 +2603,7 @@
{
return ("Part " + to_string(npart + 1) + " Kit " + to_string(kititem + 1) + eng_name + " Harmonic " + to_string((int)control + 1) + " Amplitude" + isPad);
}
- else if (insert == TOPLEVEL::insert::harmonicPhaseBandwidth)
+ else if (insert == TOPLEVEL::insert::harmonicPhase)
{
return ("Part " + to_string(npart + 1) + " Kit " + to_string(kititem + 1) + eng_name + " Harmonic " + to_string((int)control + 1) + " Phase" + isPad);
}
@@ -3258,8 +3258,8 @@
name = "Insert";
else
name = "Part " + to_string(npart + 1);
-;
- if (effType == (TOPLEVEL::insert::dynFilter | 128) && getData->data.insert != UNUSED)
+
+ if (effType == EFFECT::type::dynFilter && getData->data.insert != UNUSED)
{
if (npart == TOPLEVEL::section::systemEffects)
name = "System";
@@ -3358,7 +3358,7 @@
if ((npart < NUM_MIDI_PARTS && control == PART::control::effectType) || (npart > TOPLEVEL::section::main && effType == UNUSED && control == EFFECT::sysIns::effectType))
{
name += " set to";
- effType = value | TOPLEVEL::insert::none | 128; // TODO fix this!
+ effType = value | EFFECT::type::none; // TODO fix this!
showValue = false;
}
else
@@ -3367,13 +3367,13 @@
int ref = control; // we frequently modify this
bool isBPM = (ref == 2 && offset == 1);
//std::cout << "isbpm " << int(isBPM) << std::endl;
- switch (effType & 127)
+ switch (effType)
{
- case TOPLEVEL::insert::none:
+ case EFFECT::type::none:
effname = " None";
contstr = " ";
break;
- case TOPLEVEL::insert::reverb:
+ case EFFECT::type::reverb:
{
if (ref > 4) // there is no 5 or 6 in the list names
ref -= 2;
@@ -3397,7 +3397,7 @@
}
break;
}
- case TOPLEVEL::insert::echo:
+ case EFFECT::type::echo:
effname = " Echo ";
if (ref > 6) // there is no 7-16 in the list names
ref -= 10;
@@ -3408,7 +3408,7 @@
contstr += (" " + bpm2text(float(value) / 127.0f));
}
break;
- case TOPLEVEL::insert::chorus:
+ case EFFECT::type::chorus:
{
effname = " Chorus ";
if (ref > 10) // there is no 11-16 in the list names
@@ -3442,7 +3442,7 @@
}
break;
}
- case TOPLEVEL::insert::phaser:
+ case EFFECT::type::phaser:
effname = " Phaser ";
if (ref > 14) // there is no 15-16 in the list names
ref -= 2;
@@ -3475,7 +3475,7 @@
}
}
break;
- case TOPLEVEL::insert::alienWah:
+ case EFFECT::type::alienWah:
effname = " AlienWah ";
if (ref > 10) // there is no 11-16 in the list names
ref -= 6;
@@ -3494,7 +3494,7 @@
contstr += (" " + bpm2text(float(value) / 127.0f));
}
break;
- case TOPLEVEL::insert::distortion:
+ case EFFECT::type::distortion:
{
effname = " Distortion ";
if (ref > 5) // there is an extra line in the list names
@@ -3532,7 +3532,7 @@
controlType = distortionlist[ref * 2];
break;
}
- case TOPLEVEL::insert::eq:
+ case EFFECT::type::eq:
{
effname = " EQ ";
if (control > 1)
@@ -3554,7 +3554,7 @@
controlType = eqlist[ref * 2];
break;
}
- case TOPLEVEL::insert::dynFilter:
+ case EFFECT::type::dynFilter:
effname = " DynFilter ";
if (ref > 10) // there is no 11-16 in the list names
ref -= 6;
@@ -3591,7 +3591,7 @@
break;
}
//std::cout << "control " << int(control) << std::endl;
- if (control == EFFECT::control::preset && effType != (TOPLEVEL::insert::eq | 128))
+ if (control == EFFECT::control::preset && effType != EFFECT::type::eq)
{
contstr = " Preset " + to_string (value + 1);
showValue = false;
diff -Nru yoshimi-2.2.1/src/Interface/InterChange.cpp yoshimi-2.2.2.1/src/Interface/InterChange.cpp
--- yoshimi-2.2.1/src/Interface/InterChange.cpp 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/Interface/InterChange.cpp 2022-09-14 22:56:29.000000000 +0000
@@ -2067,7 +2067,7 @@
return true;
}
- if (effSend >= (TOPLEVEL::insert::none | 128) && effSend <= (TOPLEVEL::insert::dynFilter | 128))
+ if (effSend >= (EFFECT::type::none) && effSend < (EFFECT::type::count))
{
commandEffects(getData);
return true;
@@ -2197,7 +2197,7 @@
break;
case TOPLEVEL::insert::oscillatorGroup:
case TOPLEVEL::insert::harmonicAmplitude:
- case TOPLEVEL::insert::harmonicPhaseBandwidth:
+ case TOPLEVEL::insert::harmonicPhase:
if (engine >= PART::engine::addMod1)
{
engine -= PART::engine::addMod1;
@@ -2248,7 +2248,7 @@
commandSub(getData);
part->kit[kititem].subpars->presetsUpdated();
break;
- case TOPLEVEL::insert::harmonicPhaseBandwidth:
+ case TOPLEVEL::insert::harmonicBandwidth:
commandSub(getData);
part->kit[kititem].subpars->presetsUpdated();
break;
@@ -2319,7 +2319,7 @@
pars.presetsUpdated();
needApply = true;
break;
- case TOPLEVEL::insert::harmonicPhaseBandwidth:
+ case TOPLEVEL::insert::harmonicPhase:
commandOscillator(getData, pars.POscil.get());
pars.presetsUpdated();
needApply = true;
@@ -4900,7 +4900,7 @@
target = 0;
}
}
- tempData.data.insert = TOPLEVEL::insert::harmonicPhaseBandwidth;
+ tempData.data.insert = TOPLEVEL::insert::harmonicBandwidth;
for (int i = 0; i < MAX_SUB_HARMONICS; ++i)
{
int val = pars->Phrelbw[i];
@@ -4936,7 +4936,7 @@
add2undo(getData, noteSeen);
}
- if (insert == TOPLEVEL::insert::harmonicAmplitude || insert == TOPLEVEL::insert::harmonicPhaseBandwidth)
+ if (insert == TOPLEVEL::insert::harmonicAmplitude || insert == TOPLEVEL::insert::harmonicBandwidth)
{
if (insert == TOPLEVEL::insert::harmonicAmplitude)
{
@@ -5600,7 +5600,7 @@
else
add2undo(&tempData, noteSeen, true);
}
- tempData.data.insert = TOPLEVEL::insert::harmonicPhaseBandwidth;
+ tempData.data.insert = TOPLEVEL::insert::harmonicPhase;
for (int i = 0; i < MAX_AD_HARMONICS; ++i)
{
tempData.data.value = oscil->Phphase[i];
@@ -5627,7 +5627,7 @@
getData->data.value = oscil->Phmag[control];
return;
}
- else if (insert == TOPLEVEL::insert::harmonicPhaseBandwidth)
+ else if (insert == TOPLEVEL::insert::harmonicPhase)
{
if (write)
{
@@ -6940,7 +6940,7 @@
unsigned char type = getData->data.type;
unsigned char control = getData->data.control;
unsigned char npart = getData->data.part;
- unsigned char effSend = getData->data.kit & 127;
+ unsigned char effSend = getData->data.kit;
unsigned char effnum = getData->data.engine;
bool write = (type & TOPLEVEL::type::Write) > 0;
@@ -6962,9 +6962,11 @@
eff = synth->part[npart]->partefx[effnum];
else
return; // invalid part number
- if (effSend > TOPLEVEL::insert::dynFilter)
+
+ if (effSend >= EFFECT::type::count)
return; // invalid kit number
- if (control != PART::control::effectType && effSend != eff->geteffect())
+
+ if (control != PART::control::effectType && effSend != (eff->geteffect() + EFFECT::type::none)) // geteffect not yet converted
{
if ((getData->data.source & TOPLEVEL::action::noAction) != TOPLEVEL::action::fromMIDI)
synth->getRuntime().Log("Not Available"); // TODO sort this better for CLI as well as MIDI
@@ -6975,7 +6977,7 @@
if (eff->geteffectpar(EFFECT::control::bpm) == 1)
getData->data.offset = 1; // mark this for reporting in Data2Text
- if (effSend == TOPLEVEL::insert::dynFilter && getData->data.insert != UNUSED)
+ if (effSend == EFFECT::type::dynFilter && getData->data.insert != UNUSED)
{
if (write)
eff->seteffectpar(-1, true); // effect changed
@@ -6993,7 +6995,7 @@
}
if (write)
{
- if (effSend == TOPLEVEL::insert::eq)
+ if (effSend == EFFECT::type::eq)
/*
* specific to EQ
* Control 1 is not a saved parameter, but a band index.
@@ -7016,7 +7018,7 @@
else
{
eff->seteffectpar(control, value_int);
- if (effSend == TOPLEVEL::insert::reverb && control == 10 && value_int == 2)
+ if (effSend == EFFECT::type::reverb && control == 10 && value_int == 2)
// bandwidth type update for GUI
getData->data.offset = eff->geteffectpar(12);
}
@@ -7024,7 +7026,7 @@
}
else
{
- if (effSend == TOPLEVEL::insert::eq && control > 1) // specific to EQ
+ if (effSend == EFFECT::type::eq && control > 1) // specific to EQ
{
value = eff->geteffectpar(control + (eff->geteffectpar(1) * 5));
getData->data.parameter = eff->geteffectpar(1);
@@ -7277,7 +7279,7 @@
}
// should prolly move other inserts up here
- if (effSend >= (TOPLEVEL::insert::none | 128) && effSend <= (TOPLEVEL::insert::dynFilter | 128))
+ if (effSend >= EFFECT::type::none && effSend < EFFECT::type::count)
{
LimitMgr limits;
return limits.geteffectlimits(getData);
@@ -7288,7 +7290,7 @@
Part *part;
part = synth->part[npart];
- if (engine == PART::engine::subSynth && (insert == UNUSED || (insert >= TOPLEVEL::oscillatorGroup && insert <= TOPLEVEL::harmonicPhaseBandwidth)) && parameter == UNUSED)
+ if (engine == PART::engine::subSynth && (insert == UNUSED || (insert >= TOPLEVEL::oscillatorGroup && insert <= TOPLEVEL::harmonicBandwidth)) && parameter == UNUSED)
{
SUBnoteParameters *subpars;
subpars = part->kit[kititem].subpars;
@@ -7345,7 +7347,7 @@
}
return value;
}
- if (insert >= TOPLEVEL::insert::oscillatorGroup && insert <= TOPLEVEL::insert::harmonicPhaseBandwidth)
+ if (insert >= TOPLEVEL::insert::oscillatorGroup && insert <= TOPLEVEL::insert::harmonicPhase)
{
return part->kit[0].adpars->VoicePar[0].POscil->getLimits(getData);
// we also use this for pad limits
diff -Nru yoshimi-2.2.1/src/Interface/Text2Data.cpp yoshimi-2.2.2.1/src/Interface/Text2Data.cpp
--- yoshimi-2.2.1/src/Interface/Text2Data.cpp 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/Interface/Text2Data.cpp 2022-09-14 22:56:29.000000000 +0000
@@ -473,33 +473,33 @@
ctl = PART::control::resonanceBandwidthDepth;
}
}
+ else if (findAndStep(source,"Time"))
+ {
+ if (findAndStep(source,"Stretch"))
+ ctl = PART::control::portamentoTimeStretch;
+ else
+ ctl = PART::control::portamentoTime;
+ }
else if (findAndStep(source,"Portamento"))
{
if (findAndStep(source,"Receive"))
ctl = PART::control::receivePortamento;
- else if (findAndStep(source,"Time"))
- {
- if (findAndStep(source,"Stretch"))
- ctl = PART::control::portamentoTimeStretch;
- else
- ctl = PART::control::portamentoTime;
- }
- else if (findAndStep(source,"Threshold Gate"))
- {
- if (findAndStep(source,"Type"))
- ctl = PART::control::portamentoThresholdType;
- else
- ctl = PART::control::portamentoThreshold;
- }
- else if (findAndStep(source,"Prop"))
- {
- if (findAndStep(source,"Enable"))
- ctl = PART::control::enableProportionalPortamento;
- else if (findAndStep(source,"Rate"))
- ctl = PART::control::proportionalPortamentoRate;
- else if (findAndStep(source,"depth"))
- ctl = PART::control::proportionalPortamentoDepth;
- }
+ }
+ else if (findAndStep(source,"Threshold Gate"))
+ {
+ if (findAndStep(source,"Type"))
+ ctl = PART::control::portamentoThresholdType;
+ else
+ ctl = PART::control::portamentoThreshold;
+ }
+ else if (findAndStep(source,"Prop"))
+ {
+ if (findAndStep(source,"Enable"))
+ ctl = PART::control::enableProportionalPortamento;
+ else if (findAndStep(source,"Rate"))
+ ctl = PART::control::proportionalPortamentoRate;
+ else if (findAndStep(source,"depth"))
+ ctl = PART::control::proportionalPortamentoDepth;
}
if (ctl < UNUSED)
{
@@ -560,7 +560,7 @@
//cout << "effnum " << int(effnum) << endl;
if (findAndStep(source, "DynFilter ~ Filter"))
{
- allData.data.kit = TOPLEVEL::insert::dynFilter | 128;
+ allData.data.kit = EFFECT::type::dynFilter;
encodeFilter(source, allData);
return;
}
@@ -593,55 +593,55 @@
}
unsigned char efftype = findListEntry(source, 1, fx_list);
- if (efftype >= TOPLEVEL::insert::count - TOPLEVEL::insert::none)
+ if (efftype >= EFFECT::type::count - EFFECT::type::none)
{
log(source, "effect type out of range");
return;
}
- int effpos = efftype + TOPLEVEL::insert::none;
- allData.data.kit = efftype + (TOPLEVEL::insert::none | 128);
+ int effpos = efftype + EFFECT::type::none;
+ allData.data.kit = efftype + EFFECT::type::none;
// now need to do actual control
unsigned char result = UNUSED;
std::cout << "effpos " << effpos << std::endl;
switch (effpos)
{
- case TOPLEVEL::insert::reverb:
+ case EFFECT::type::reverb:
result = findListEntry(source, 2, reverblist);
if (result > 4) // no 5 or 6
result += 2;
break;
- case TOPLEVEL::insert::echo:
+ case EFFECT::type::echo:
result = findListEntry(source, 2, echolist);
if (result == 7) // skip unused numbers
result = EFFECT::control::bpm;
break;
- case TOPLEVEL::insert::chorus:
+ case EFFECT::type::chorus:
result = findListEntry(source, 2, choruslist);
if (result >= 11) // skip unused numbers
result = result - 11 + EFFECT::control::bpm;
break;
- case TOPLEVEL::insert::phaser:
+ case EFFECT::type::phaser:
result = findListEntry(source, 2, phaserlist);
if (result >= 15) // skip unused numbers
result = result - 15 + EFFECT::control::bpm;
break;
- case TOPLEVEL::insert::alienWah:
+ case EFFECT::type::alienWah:
result = findListEntry(source, 2, alienwahlist);
if (result >= 11) // skip unused numbers
result = result - 11 + EFFECT::control::bpm;
break;
- case TOPLEVEL::insert::distortion:
+ case EFFECT::type::distortion:
result = findListEntry(source, 2, distortionlist);
if (result > 5) // extra line
result -= 1;
break;
- case TOPLEVEL::insert::eq:
+ case EFFECT::type::eq:
result = findListEntry(source, 2, eqlist);
if (result > 2) // extra line
result -= 1;
break;
- case TOPLEVEL::insert::dynFilter:
+ case EFFECT::type::dynFilter:
result = findListEntry(source, 2, dynfilterlist);
if (result >= 11) // skip unused numbers
result = result - 11 + EFFECT::control::bpm;
@@ -1029,7 +1029,7 @@
}
else if (findAndStep(source, "Bandwidth"))
{
- allData.data.insert = TOPLEVEL::insert::harmonicPhaseBandwidth;
+ allData.data.insert = TOPLEVEL::insert::harmonicBandwidth;
ctl = harmonicNum;
}
if (ctl < UNUSED)
@@ -1292,7 +1292,7 @@
if (findAndStep(source, "Amplitude"))
allData.data.insert = TOPLEVEL::insert::harmonicAmplitude;
else if (findAndStep(source, "Phase"))
- allData.data.insert = TOPLEVEL::insert::harmonicPhaseBandwidth;
+ allData.data.insert = TOPLEVEL::insert::harmonicPhase;
else
log(source, " no harmonic type");
}
diff -Nru yoshimi-2.2.1/src/LV2_Plugin/YoshimiLV2Plugin.cpp yoshimi-2.2.2.1/src/LV2_Plugin/YoshimiLV2Plugin.cpp
--- yoshimi-2.2.1/src/LV2_Plugin/YoshimiLV2Plugin.cpp 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/LV2_Plugin/YoshimiLV2Plugin.cpp 2022-09-14 22:56:29.000000000 +0000
@@ -281,16 +281,6 @@
}
-void *YoshimiLV2Plugin::idleThread()
-{
- while (_synth->getRuntime().runSynth)
- {
- usleep(33333); // TODO what is the point of this?
- }
- return NULL;
-}
-
-
YoshimiLV2Plugin::YoshimiLV2Plugin(SynthEngine *synth, double sampleRate, const char *bundlePath, const LV2_Feature *const *features, const LV2_Descriptor *desc):
MusicIO(synth, new SinglethreadedBeatTracker),
_synth(synth),
@@ -303,7 +293,6 @@
_bufferPos(0),
_offsetPos(0),
_bFreeWheel(NULL),
- _pIdleThread(0),
_lv2_desc(desc)
{
_uridMap.handle = NULL;
@@ -383,8 +372,6 @@
getProgram(flatbankprgs.size() + 1);
}
_synth->getRuntime().runSynth = false;
- if(_pIdleThread)
- pthread_join(_pIdleThread, NULL);
delete _synth;
_synth = NULL;
}
@@ -418,12 +405,6 @@
_synth->getRuntime().runSynth = true;
- if (!_synth->getRuntime().startThread(&_pIdleThread, YoshimiLV2Plugin::static_idleThread, this, false, 0, "LV2 idle"))
- {
- synth->getRuntime().Log("Failed to start idle thread");
- return false;
- }
-
synth->getRuntime().Log("Starting in LV2 plugin mode");
return true;
}
@@ -667,12 +648,6 @@
}
-void *YoshimiLV2Plugin::static_idleThread(void *arg)
-{
- return static_cast(arg)->idleThread();
-}
-
-
LV2_State_Status YoshimiLV2Plugin::static_StateSave(LV2_Handle instance, LV2_State_Store_Function store, LV2_State_Handle handle, uint32_t flags, const LV2_Feature * const *features)
{
return static_cast(instance)->stateSave(store, handle, flags, features);
diff -Nru yoshimi-2.2.1/src/LV2_Plugin/YoshimiLV2Plugin.h yoshimi-2.2.2.1/src/LV2_Plugin/YoshimiLV2Plugin.h
--- yoshimi-2.2.1/src/LV2_Plugin/YoshimiLV2Plugin.h 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/LV2_Plugin/YoshimiLV2Plugin.h 2022-09-14 22:56:29.000000000 +0000
@@ -79,14 +79,11 @@
float *_bFreeWheel;
- pthread_t _pIdleThread;
-
float *lv2Left [NUM_MIDI_PARTS + 1];
float *lv2Right [NUM_MIDI_PARTS + 1];
void process(uint32_t sample_count);
void processMidiMessage(const uint8_t *msg);
- void *idleThread(void);
std::vector flatbankprgs;
const LV2_Descriptor *_lv2_desc;
public:
@@ -125,8 +122,6 @@
const LV2_Program_Descriptor * getProgram(uint32_t index);
void selectProgramNew(unsigned char channel, uint32_t bank, uint32_t program);
- static void *static_idleThread(void *arg);
-
static LV2_State_Status static_StateSave(LV2_Handle instance, LV2_State_Store_Function store, LV2_State_Handle handle, uint32_t flags, const LV2_Feature *const * features);
static LV2_State_Status static_StateRestore(LV2_Handle instance, LV2_State_Retrieve_Function retrieve, LV2_State_Handle handle, uint32_t flags, const LV2_Feature *const * features);
diff -Nru yoshimi-2.2.1/src/Misc/BuildScheduler.h yoshimi-2.2.2.1/src/Misc/BuildScheduler.h
--- yoshimi-2.2.1/src/Misc/BuildScheduler.h 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/Misc/BuildScheduler.h 2022-09-14 22:56:29.000000000 +0000
@@ -24,7 +24,7 @@
#include
#include
#include
-#include
+//#include
#include
#include
#include
diff -Nru yoshimi-2.2.1/src/Misc/ConfBuild.h yoshimi-2.2.2.1/src/Misc/ConfBuild.h
--- yoshimi-2.2.1/src/Misc/ConfBuild.h 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/Misc/ConfBuild.h 2022-09-14 22:56:29.000000000 +0000
@@ -2,4 +2,4 @@
ConfBuild.h
*/
-#define BUILD_NUMBER 2146
+#define BUILD_NUMBER 2156
diff -Nru yoshimi-2.2.1/src/Misc/FileMgrFuncs.h yoshimi-2.2.2.1/src/Misc/FileMgrFuncs.h
--- yoshimi-2.2.1/src/Misc/FileMgrFuncs.h 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/Misc/FileMgrFuncs.h 2022-09-14 22:56:29.000000000 +0000
@@ -1,7 +1,7 @@
/*
FileMgr.h - all file operations
- Copyright 2019-2021 Will Godfrey and others.
+ Copyright 2019-2022 Will Godfrey and others.
This file is part of yoshimi, which is free software: you can redistribute
it and/or modify it under the terms of the GNU General Public
@@ -421,7 +421,7 @@
{
if (fn->d_type == DT_DIR)
{
- if(fn->d_name != dir1 && fn->d_name != dir2)
+ if (strcmp(fn->d_name, dir1) !=0 && strcmp(fn->d_name, dir2) !=0)
++ count;
}
}
@@ -475,7 +475,9 @@
build.clear();
return;
}
- bool instype = ((exten == ".xiz") | (exten == ".xiy") | (exten == ".xi*"));
+
+ // int to suppress clang compiler warning
+ bool instype = (int(exten == ".xiz") | (exten == ".xiy") | (exten == ".xi*"));
string last;
last.clear();
for (std::list::iterator it = build.begin(); it != build.end(); ++it)
diff -Nru yoshimi-2.2.1/src/Misc/SynthEngine.cpp yoshimi-2.2.2.1/src/Misc/SynthEngine.cpp
--- yoshimi-2.2.1/src/Misc/SynthEngine.cpp 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/Misc/SynthEngine.cpp 2022-09-14 22:56:29.000000000 +0000
@@ -870,7 +870,7 @@
}
else
{
- putData.data.kit = (TOPLEVEL::insert::none | 128) + sysefx[effnum]->geteffect();
+ putData.data.kit = EFFECT::type::none + sysefx[effnum]->geteffect();
putData.data.control = parnum;
}
}
@@ -884,7 +884,7 @@
putData.data.control = 2;
else
{
- putData.data.kit = (TOPLEVEL::insert::none | 128) + insefx[effnum]->geteffect();
+ putData.data.kit = EFFECT::type::none + insefx[effnum]->geteffect();
putData.data.control = parnum;
}
}
diff -Nru yoshimi-2.2.1/src/MusicIO/MusicClient.cpp yoshimi-2.2.2.1/src/MusicIO/MusicClient.cpp
--- yoshimi-2.2.1/src/MusicIO/MusicClient.cpp 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/MusicIO/MusicClient.cpp 2022-09-14 22:56:29.000000000 +0000
@@ -45,9 +45,9 @@
std::set clSet;
music_clients c1 = {0, _synth->getRuntime().audioEngine, _synth->getRuntime().midiEngine};
clSet.insert(c1);
- music_clients c2 = {1, jack_audio, jack_midi};
+ music_clients c2 = {1, jack_audio, alsa_midi};
clSet.insert(c2);
- music_clients c3 = {2, jack_audio, alsa_midi};
+ music_clients c3 = {2, jack_audio, jack_midi};
clSet.insert(c3);
music_clients c4 = {3, alsa_audio, alsa_midi};
clSet.insert(c4);
@@ -55,8 +55,12 @@
clSet.insert(c5);
music_clients c6 = {5, alsa_audio, no_midi};
clSet.insert(c6);
- music_clients c7 = {6, no_audio, no_midi}; //this one always will do the work :)
+ music_clients c7 = {6, no_audio, alsa_midi};
clSet.insert(c7);
+ music_clients c8 = {7, no_audio, jack_midi};
+ clSet.insert(c8);
+ music_clients c9 = {8, no_audio, no_midi}; //this one always will do the work :)
+ clSet.insert(c9);
for (std::set::iterator it = clSet.begin(); it != clSet.end(); ++it)
{
@@ -76,7 +80,6 @@
delete client;
}
}
-
return 0;
}
diff -Nru yoshimi-2.2.1/src/Params/FilterParams.cpp yoshimi-2.2.2.1/src/Params/FilterParams.cpp
--- yoshimi-2.2.1/src/Params/FilterParams.cpp 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/Params/FilterParams.cpp 2022-09-14 22:56:29.000000000 +0000
@@ -395,7 +395,7 @@
float value = getData->data.value;
int request = int(getData->data.type & TOPLEVEL::type::Default);
int control = getData->data.control;
- int effType = getData->data.kit & 127;
+ int effType = getData->data.kit;
int engine = getData->data.engine;
unsigned char type = 0;
@@ -411,7 +411,7 @@
switch (control)
{
case FILTERINSERT::control::centerFrequency:
- if (effType == TOPLEVEL::insert::dynFilter)
+ if (effType == EFFECT::type::dynFilter)
def = 45;
else if (engine == PART::engine::subSynth)
def = 80;
@@ -423,7 +423,7 @@
case FILTERINSERT::control::Q:
if (engine >= PART::engine::addVoice1)
def = 60;
- else if (effType != TOPLEVEL::insert::dynFilter)
+ else if (effType != EFFECT::type::dynFilter)
def = 40;
break; // for dynFilter it's the default 64
case FILTERINSERT::control::frequencyTracking:
@@ -437,7 +437,7 @@
case FILTERINSERT::control::gain:
break;
case FILTERINSERT::control::stages:
- if (effType == TOPLEVEL::insert::dynFilter)
+ if (effType == EFFECT::type::dynFilter)
def = 1;
else
def = 0;
diff -Nru yoshimi-2.2.1/src/Params/OscilParameters.cpp yoshimi-2.2.2.1/src/Params/OscilParameters.cpp
--- yoshimi-2.2.1/src/Params/OscilParameters.cpp 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/Params/OscilParameters.cpp 2022-09-14 22:56:29.000000000 +0000
@@ -285,7 +285,7 @@
unsigned char learnable = TOPLEVEL::type::Learnable;
type |= learnable;
- if (insert == TOPLEVEL::insert::harmonicAmplitude || insert == TOPLEVEL::insert::harmonicPhaseBandwidth)
+ if (insert == TOPLEVEL::insert::harmonicAmplitude || insert == TOPLEVEL::insert::harmonicPhase)
{ // do harmonics stuff
if (insert == TOPLEVEL::insert::harmonicAmplitude && control == 0)
def = 127;
diff -Nru yoshimi-2.2.1/src/Params/PADnoteParameters.cpp yoshimi-2.2.2.1/src/Params/PADnoteParameters.cpp
--- yoshimi-2.2.1/src/Params/PADnoteParameters.cpp 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/Params/PADnoteParameters.cpp 2022-09-14 22:56:29.000000000 +0000
@@ -879,8 +879,8 @@
bool isOK = true;
for (size_t tab = 0; tab < waveTable.numTables; ++tab)
{
- char tmpstr[20];
- snprintf(tmpstr, 20, "-%02zu", tab + 1);
+ char tmpstr[22];
+ snprintf(tmpstr, 22, "-%02zu", tab + 1);
string filename = basefilename + string(tmpstr) + EXTEN::MSwave;
unsigned int block;
unsigned short int sBlock;
diff -Nru yoshimi-2.2.1/src/Params/SUBnoteParameters.cpp yoshimi-2.2.2.1/src/Params/SUBnoteParameters.cpp
--- yoshimi-2.2.1/src/Params/SUBnoteParameters.cpp 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/Params/SUBnoteParameters.cpp 2022-09-14 22:56:29.000000000 +0000
@@ -409,7 +409,7 @@
unsigned char learnable = TOPLEVEL::type::Learnable;
type |= learnable;
- if (insert == TOPLEVEL::insert::harmonicAmplitude || insert == TOPLEVEL::insert::harmonicPhaseBandwidth)
+ if (insert == TOPLEVEL::insert::harmonicAmplitude || insert == TOPLEVEL::insert::harmonicBandwidth)
{ // do harmonics stuff
if (control >= MAX_SUB_HARMONICS)
{
@@ -417,7 +417,7 @@
return 1;
}
- if (insert == TOPLEVEL::insert::harmonicPhaseBandwidth)
+ if (insert == TOPLEVEL::insert::harmonicBandwidth)
def = 64;
else if (control == 0)
def = 127;
diff -Nru yoshimi-2.2.1/src/Synth/ADnote.cpp yoshimi-2.2.2.1/src/Synth/ADnote.cpp
--- yoshimi-2.2.1/src/Synth/ADnote.cpp 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/Synth/ADnote.cpp 2022-09-14 22:56:29.000000000 +0000
@@ -148,11 +148,13 @@
, topVoice{topVoice_}
, parentFMmod{parentFMmod_}
{
+ // Start phase for sub-Voices should be negative so that the zero phase in
+ // the first cycle will result in a positive phase change.
int phase = (topVoice==this)? 0 : synth.oscilsize - phaseOffset;
- // Start phase for sub-Voices should be negative
- // so that the zero phase in the first cycle will result in a positive phase change.
- for (int nvoice = 0; nvoice < NUM_VOICES; ++nvoice)
+ for (int nvoice = 0; nvoice < NUM_VOICES; ++nvoice) {
NoteVoicePar[nvoice].phaseOffset = phase;
+ NoteVoicePar[nvoice].fmPhaseOffset = phase;
+ }
construct();
}
@@ -560,20 +562,6 @@
NoteVoicePar[nvoice].oscilSmp.attachReference(topVoice->NoteVoicePar[nvoice].oscilSmp);
}
- int oscposhi_start;
- if (NoteVoicePar[nvoice].voice == -1)
- oscposhi_start = adpars.VoicePar[vc].OscilSmp->getPhase();
- else
- oscposhi_start = 0;
- int kth_start = oscposhi_start;
- for (int k = 0; k < unison; ++k)
- {
- oscposhi[nvoice][k] = kth_start % synth.oscilsize;
- // put random starting point for other subvoices
- kth_start = oscposhi_start + (int)(synth.numRandom() * adpars.VoicePar[nvoice].Unison_phase_randomness
- / 127.0f * (synth.oscilsize - 1));
- }
-
if (adpars.VoicePar[nvoice].Type != 0)
NoteVoicePar[nvoice].fmEnabled = NONE;
else
@@ -661,6 +649,8 @@
if (NoteVoicePar[nvoice].voice != -1)
{
+ computePhaseOffsets(nvoice);
+
subVoice[nvoice].reset(new unique_ptr[unison_size[nvoice]]);
for (size_t k = 0; k < unison_size[nvoice]; ++k)
{
@@ -675,6 +665,8 @@
if (NoteVoicePar[nvoice].fmVoice != -1)
{
+ computeFMPhaseOffsets(nvoice);
+
bool voiceForFM = NoteVoicePar[nvoice].fmEnabled == FREQ_MOD;
subFMVoice[nvoice].reset(new unique_ptr[unison_size[nvoice]]);
for (size_t k = 0; k < unison_size[nvoice]; ++k) {
@@ -914,35 +906,53 @@
if (adpars.VoicePar[nvoice].PFilterLfoEnabled)
NoteVoicePar[nvoice].filterLFO.reset(new LFO{adpars.VoicePar[nvoice].FilterLfo, note.freq, &synth});
- // Voice Modulation Parameters Init
- if (NoteVoicePar[nvoice].fmEnabled != NONE
- && NoteVoicePar[nvoice].fmVoice < 0)
+ int kth_start = 0;
+ for (size_t k = 0; k < unison_size[nvoice]; ++k)
{
- // Perform Anti-aliasing only on MORPH or RING MODULATION
+ oscposhi[nvoice][k] = kth_start;
+ // put random starting point for other subvoices
+ kth_start = (int)(synth.numRandom() * adpars.VoicePar[nvoice].Unison_phase_randomness
+ / 127.0f * (synth.oscilsize - 1));
+ }
- int vc = nvoice;
- if (adpars.VoicePar[nvoice].PextFMoscil != -1)
- vc = adpars.VoicePar[nvoice].PextFMoscil;
+ // Voice Modulation Parameters Init
+ if (NoteVoicePar[nvoice].fmEnabled != NONE)
+ {
+ if (NoteVoicePar[nvoice].fmVoice < 0)
+ {
+ int vc = nvoice;
+ if (adpars.VoicePar[nvoice].PextFMoscil != -1)
+ vc = adpars.VoicePar[nvoice].PextFMoscil;
- if (subVoiceNr == -1) {
- // this voice maintains its own oscil wavetable...
- NoteVoicePar[nvoice].fmSmp.allocateWaveform(synth.oscilsize);
-
- adpars.VoicePar[nvoice].FMSmp->newrandseed();
- if (!adpars.GlobalPar.Hrandgrouping)
- adpars.VoicePar[vc].FMSmp->newrandseed();
+ if (subVoiceNr == -1) {
+ // this voice maintains its own oscil wavetable...
+ NoteVoicePar[nvoice].fmSmp.allocateWaveform(synth.oscilsize);
+
+ adpars.VoicePar[nvoice].FMSmp->newrandseed();
+ if (!adpars.GlobalPar.Hrandgrouping)
+ adpars.VoicePar[vc].FMSmp->newrandseed();
+
+ } else {
+ // If subvoice use oscillator from original voice.
+ NoteVoicePar[nvoice].fmSmp.attachReference(topVoice->NoteVoicePar[nvoice].fmSmp);
+ }
+ for (size_t k = 0; k < unison_size[nvoice]; ++k)
+ oscposhiFM[nvoice][k] =
+ (oscposhi[nvoice][k] + adpars.VoicePar[vc].FMSmp->
+ getPhase()) % synth.oscilsize;
} else {
- // If subvoice use oscillator from original voice.
- NoteVoicePar[nvoice].fmSmp.attachReference(topVoice->NoteVoicePar[nvoice].fmSmp);
+ for (size_t k = 0; k < unison_size[nvoice]; ++k)
+ oscposhiFM[nvoice][k] = oscposhi[nvoice][k];
}
+ }
+ // Offset by oscillator phase.
+ if (NoteVoicePar[nvoice].voice == -1) {
+ int oscposhi_start;
+ oscposhi_start = adpars.VoicePar[nvoice].OscilSmp->getPhase();
for (size_t k = 0; k < unison_size[nvoice]; ++k)
- oscposhiFM[nvoice][k] =
- (oscposhi[nvoice][k] + adpars.VoicePar[vc].FMSmp->
- getPhase()) % synth.oscilsize;
-
- NoteVoicePar[nvoice].fmPhaseOffset = 0;
+ oscposhi[nvoice][k] = (oscposhi[nvoice][k] + oscposhi_start) % synth.oscilsize;
}
if (adpars.VoicePar[nvoice].PFMFreqEnvelopeEnabled != 0)
@@ -1119,52 +1129,26 @@
NoteVoicePar[nvoice].oscilSmp.fillInterpolationBuffer();
}
- int new_phase_offset = (int)((adpars.VoicePar[nvoice].Poscilphase - 64.0f)
- / 128.0f * synth.oscilsize + synth.oscilsize * 4);
- int phase_offset_diff = new_phase_offset - NoteVoicePar[nvoice].phaseOffset;
- for (int k = 0; k < unison; ++k) {
- oscposhi[nvoice][k] = (oscposhi[nvoice][k] + phase_offset_diff) % synth.oscilsize;
- if (oscposhi[nvoice][k] < 0)
- // This is necessary, because C '%' operator does not always
- // return a positive result.
- oscposhi[nvoice][k] += synth.oscilsize;
- }
- NoteVoicePar[nvoice].phaseOffset = new_phase_offset;
-
if (NoteVoicePar[nvoice].fmEnabled != NONE
- && NoteVoicePar[nvoice].fmVoice < 0)
- {
- if (subVoiceNr == -1) {
- int vc = nvoice;
- if (adpars.VoicePar[nvoice].PextFMoscil != -1)
- vc = adpars.VoicePar[nvoice].PextFMoscil;
+ && NoteVoicePar[nvoice].fmVoice < 0
+ && subVoiceNr == -1) {
+ int vc = nvoice;
+ if (adpars.VoicePar[nvoice].PextFMoscil != -1)
+ vc = adpars.VoicePar[nvoice].PextFMoscil;
- float freqtmp = 1.0f;
- if (adpars.VoicePar[vc].POscilFM->Padaptiveharmonics != 0
- || (NoteVoicePar[nvoice].fmEnabled == MORPH)
- || (NoteVoicePar[nvoice].fmEnabled == RING_MOD))
- freqtmp = getFMVoiceBaseFreq(nvoice);
+ float freqtmp = 1.0f;
+ if (adpars.VoicePar[vc].POscilFM->Padaptiveharmonics != 0
+ || (NoteVoicePar[nvoice].fmEnabled == MORPH)
+ || (NoteVoicePar[nvoice].fmEnabled == RING_MOD))
+ freqtmp = getFMVoiceBaseFreq(nvoice);
- adpars.VoicePar[vc].FMSmp->getWave(NoteVoicePar[nvoice].fmSmp, freqtmp);
- NoteVoicePar[nvoice].fmSmp.fillInterpolationBuffer();
- }
-
- int new_FMphase_offset = (int)((adpars.VoicePar[nvoice].PFMoscilphase - 64.0f)
- / 128.0f * synth.oscilsize_f
- + synth.oscilsize_f * 4.0f);
- int FMphase_offset_diff = new_FMphase_offset - NoteVoicePar[nvoice].fmPhaseOffset;
- for (size_t k = 0; k < unison_size[nvoice]; ++k)
- {
- oscposhiFM[nvoice][k] += FMphase_offset_diff;
- oscposhiFM[nvoice][k] %= synth.oscilsize;
- if (oscposhiFM[nvoice][k] < 0)
- // This is necessary, because C '%' operator does not always
- // return a positive result.
- oscposhiFM[nvoice][k] += synth.oscilsize;
- }
- NoteVoicePar[nvoice].fmPhaseOffset = new_FMphase_offset;
+ adpars.VoicePar[vc].FMSmp->getWave(NoteVoicePar[nvoice].fmSmp, freqtmp);
+ NoteVoicePar[nvoice].fmSmp.fillInterpolationBuffer();
}
+ computePhaseOffsets(nvoice);
+ computeFMPhaseOffsets(nvoice);
+
bool is_pwm = NoteVoicePar[nvoice].fmEnabled == PW_MOD;
unison_stereo_spread[nvoice] =
@@ -1289,6 +1273,41 @@
}
}
+void ADnote::computePhaseOffsets(int nvoice)
+{
+ int new_phase_offset = (int)((adpars.VoicePar[nvoice].Poscilphase - 64.0f)
+ / 128.0f * synth.oscilsize + synth.oscilsize * 4);
+ int phase_offset_diff = new_phase_offset - NoteVoicePar[nvoice].phaseOffset;
+ for (size_t k = 0; k < unison_size[nvoice]; ++k) {
+ oscposhi[nvoice][k] = (oscposhi[nvoice][k] + phase_offset_diff) % synth.oscilsize;
+ if (oscposhi[nvoice][k] < 0)
+ // This is necessary, because C '%' operator does not always
+ // return a positive result.
+ oscposhi[nvoice][k] += synth.oscilsize;
+ }
+ NoteVoicePar[nvoice].phaseOffset = new_phase_offset;
+}
+
+void ADnote::computeFMPhaseOffsets(int nvoice)
+{
+ if (NoteVoicePar[nvoice].fmEnabled != NONE) {
+ int new_FMphase_offset = (int)((adpars.VoicePar[nvoice].PFMoscilphase - 64.0f)
+ / 128.0f * synth.oscilsize_f
+ + synth.oscilsize_f * 4.0f);
+ int FMphase_offset_diff = new_FMphase_offset - NoteVoicePar[nvoice].fmPhaseOffset;
+ for (size_t k = 0; k < unison_size[nvoice]; ++k)
+ {
+ oscposhiFM[nvoice][k] += FMphase_offset_diff;
+ oscposhiFM[nvoice][k] %= synth.oscilsize;
+ if (oscposhiFM[nvoice][k] < 0)
+ // This is necessary, because C '%' operator does not always
+ // return a positive result.
+ oscposhiFM[nvoice][k] += synth.oscilsize;
+ }
+ NoteVoicePar[nvoice].fmPhaseOffset = new_FMphase_offset;
+ }
+}
+
// Get Voice's Modullator base frequency
float ADnote::getFMVoiceBaseFreq(int nvoice)
{
diff -Nru yoshimi-2.2.1/src/Synth/ADnote.h yoshimi-2.2.2.1/src/Synth/ADnote.h
--- yoshimi-2.2.1/src/Synth/ADnote.h 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/Synth/ADnote.h 2022-09-14 22:56:29.000000000 +0000
@@ -166,6 +166,8 @@
void computeUnisonFreqRap(int nvoice);
void computeNoteParameters(void);
void computeWorkingParameters(void);
+ void computePhaseOffsets(int nvoice);
+ void computeFMPhaseOffsets(int nvoice);
void initParameters(void);
void initSubVoices(void);
void killVoice(int nvoice);
diff -Nru yoshimi-2.2.1/src/UI/EffUI.fl yoshimi-2.2.2.1/src/UI/EffUI.fl
--- yoshimi-2.2.1/src/UI/EffUI.fl 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/UI/EffUI.fl 2022-09-14 22:56:29.000000000 +0000
@@ -219,7 +219,7 @@
effchoruswindow->hide(); // delete (effchoruswindow);
effphaserwindow->hide(); // delete (effphaserwindow);
effalienwahwindow->hide(); // delete (effalienwahwindow);
- effdistorsionwindow->hide(); // delete (effdistorsionwindow);
+ effdistortionwindow->hide(); // delete (effdistortionwindow);
effeqwindow->hide(); // delete (effeqwindow);
effdynamicfilterwindow->hide(); // delete (effdynamicfilterwindow);
@@ -254,21 +254,21 @@
Fl_Choice revp {
label Preset
callback {//
- send_data(TOPLEVEL::action::forceUpdate, 16, o->value(), (TOPLEVEL::insert::reverb | 128), TOPLEVEL::type::Integer);}
+ send_data(TOPLEVEL::action::forceUpdate, 16, o->value(), (EFFECT::type::reverb), TOPLEVEL::type::Integer);}
xywh {115 13 90 15} down_box BORDER_BOX color 14 selection_color 0 labelsize 11 textfont 1 textsize 10 textcolor 7
code0 {o->add("Cathedral 1");o->add("Cathedral 2");o->add("Cathedral 3");o->add("Hall 1");o->add("Hall 2");o->add("Room 1");o->add("Room 2");o->add("Basement");o->add("Tunnel");o->add("Echoed 1");o->add("Echoed 2");o->add("Very Long 1");o->add("Very Long 2");}
} {}
Fl_Choice revp10 {
label Type
callback {//
- send_data(TOPLEVEL::action::forceUpdate, 10, o->value(), (TOPLEVEL::insert::reverb | 128), TOPLEVEL::type::Integer);}
+ send_data(TOPLEVEL::action::forceUpdate, 10, o->value(), (EFFECT::type::reverb), TOPLEVEL::type::Integer);}
xywh {240 13 75 15} down_box BORDER_BOX color 14 labelsize 11 textfont 1 textsize 10 textcolor 7
code0 {o->add("Random");o->add("Freeverb");o->add("Bandwidth");}
} {}
Fl_Dial revp0 {
label Vol
callback {//
- send_data(0, 0, o->value(), (TOPLEVEL::insert::reverb | 128), TOPLEVEL::type::Integer);}
+ send_data(0, 0, o->value(), (EFFECT::type::reverb), TOPLEVEL::type::Integer);}
tooltip {Effect volume} xywh {10 40 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code1 {o->setValueType(VC_FXReverbVol);}
class WidgetPDial
@@ -277,7 +277,7 @@
label Pan
callback {//
int butt = 1;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::reverb | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::reverb), TOPLEVEL::type::Integer);}
xywh {45 40 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code1 {o->setValueType(VC_PanningStd);}
class WidgetPDial
@@ -286,7 +286,7 @@
label Time
callback {//
int butt = 2;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::reverb | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::reverb), TOPLEVEL::type::Integer);}
tooltip {Duration of effect} xywh {80 40 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code1 {o->setValueType(VC_FXReverbTime);}
class WidgetPDial
@@ -295,7 +295,7 @@
label {I.del}
callback {//
int butt = 3;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::reverb | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::reverb), TOPLEVEL::type::Integer);}
tooltip {Initial delay} xywh {120 40 30 30} box ROUND_UP_BOX labelsize 11 when 4 maximum 127
code0 {o->setValueType(VC_FXReverbIDelay);}
class WidgetPDial
@@ -304,7 +304,7 @@
label {I.delfb}
callback {//
int butt = 4;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::reverb | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::reverb), TOPLEVEL::type::Integer);}
tooltip {Initial delay feedback} xywh {155 40 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_percent128);}
class WidgetPDial
@@ -313,7 +313,7 @@
label BW
callback {//
int butt = 12;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::reverb | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::reverb), TOPLEVEL::type::Integer);}
xywh {200 40 30 30} box ROUND_UP_BOX labelsize 11 when 4 maximum 127 deactivate
code0 {if (eff->geteffectpar(10)==2) o->activate();}
code1 {o->setValueType(VC_FXReverbBandwidth);}
@@ -323,7 +323,7 @@
label {E/R}
callback {//
int butt = 6;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::reverb | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::reverb), TOPLEVEL::type::Integer);}
xywh {235 40 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 deactivate
class WidgetPDial
}
@@ -331,7 +331,7 @@
label LPF
callback {//
int butt = 7;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::reverb | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::reverb), TOPLEVEL::type::Integer);}
tooltip {Low pass filter} xywh {270 40 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_FXReverbLowPass);}
class WidgetPDial
@@ -340,7 +340,7 @@
label HPF
callback {//
int butt = 8;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::reverb | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::reverb), TOPLEVEL::type::Integer);}
tooltip {High pass filter} xywh {305 40 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_FXReverbHighPass);}
class WidgetPDial
@@ -349,7 +349,7 @@
label Damp
callback {//
int butt = 9;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::reverb | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::reverb), TOPLEVEL::type::Integer);}
tooltip Dampening xywh {340 40 30 30} box ROUND_UP_BOX labelsize 11 minimum 64 maximum 127 step 1
code0 {o->setValueType(VC_percent64_127);}
class WidgetPDial
@@ -358,7 +358,7 @@
label {R.S.}
callback {//
int butt = 11;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::reverb | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::reverb), TOPLEVEL::type::Integer);}
tooltip RoomSize xywh {342 8 25 25} box ROUND_UP_BOX labelsize 10 align 4 minimum 1 maximum 127 step 1
code0 {o->setValueType(VC_percent127);}
class WidgetPDial
@@ -377,14 +377,14 @@
Fl_Choice echop {
label Preset
callback {//
- send_data(TOPLEVEL::action::forceUpdate, 16, o->value(), (TOPLEVEL::insert::echo | 128), TOPLEVEL::type::Integer);}
+ send_data(TOPLEVEL::action::forceUpdate, 16, o->value(), (EFFECT::type::echo), TOPLEVEL::type::Integer);}
xywh {102 13 96 15} down_box BORDER_BOX color 14 selection_color 0 labelsize 11 textfont 1 textsize 10 textcolor 7
code0 {o->add("Echo 1");o->add("Echo 2");o->add("Echo 3");o->add("Echo 4");o->add("Simple Echo");o->add("Canyon");o->add("Panning Echo 1");o->add("Panning Echo 2");o->add("Feedback Echo 3");}
} {}
Fl_Dial echop0 {
label Vol
callback {//
- send_data(0, 0, o->value(), (TOPLEVEL::insert::echo | 128), TOPLEVEL::type::Integer);}
+ send_data(0, 0, o->value(), (EFFECT::type::echo), TOPLEVEL::type::Integer);}
tooltip {Effect volume} xywh {10 40 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_FXEchoVol);}
class WidgetPDial
@@ -393,7 +393,7 @@
label Pan
callback {//
int butt = 1;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::echo | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::echo), TOPLEVEL::type::Integer);}
xywh {64 40 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_PanningStd);}
class WidgetPDial
@@ -402,7 +402,7 @@
label Delay
callback {//
int butt = 2;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::echo | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::echo), TOPLEVEL::type::Integer);}
xywh {118 40 30 30} box ROUND_UP_BOX labelsize 11 when 4 maximum 127
code0 {o->setValueType(eff->geteffectpar(EFFECT::control::bpm) ? VC_FXlfofreqBPM : VC_FXEchoDelay);}
class WidgetPDial
@@ -411,7 +411,7 @@
label {LRdl.}
callback {//
int butt = 3;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::echo | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::echo), TOPLEVEL::type::Integer);}
tooltip {Delay between L/R} xywh {172 40 30 30} box ROUND_UP_BOX labelsize 11 when 4 maximum 127
code0 {o->setValueType(VC_FXEchoLRdel);}
class WidgetPDial
@@ -420,7 +420,7 @@
label {LRc.}
callback {//
int butt = 4;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::echo | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::echo), TOPLEVEL::type::Integer);}
tooltip {L/R crossover} xywh {226 40 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_percent127);}
class WidgetPDial
@@ -429,7 +429,7 @@
label {Fb.}
callback {//
int butt = 5;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::echo | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::echo), TOPLEVEL::type::Integer);}
tooltip Feedback xywh {280 40 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_percent127);}
class WidgetPDial
@@ -438,7 +438,7 @@
label Damp
callback {//
int butt = 6;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::echo | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::echo), TOPLEVEL::type::Integer);}
tooltip Dampening xywh {334 40 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_percent127);}
class WidgetPDial
@@ -446,7 +446,7 @@
Fl_Check_Button echop17 {
label BPM
callback {//
- send_data(0, EFFECT::control::bpm, o->value(), (TOPLEVEL::insert::echo | 128), TOPLEVEL::type::Integer);}
+ send_data(0, EFFECT::control::bpm, o->value(), (EFFECT::type::echo), TOPLEVEL::type::Integer);}
tooltip {Synchronize the frequency to a multiple of the BPM. Note that the delay is capped at 5 seconds, even if the tempo is slower than this.} xywh {325 10 45 15} down_box DOWN_BOX labelsize 11
}
}
@@ -463,21 +463,21 @@
Fl_Choice chorusp {
label Preset
callback {//
- send_data(TOPLEVEL::action::forceUpdate, 16, o->value(), (TOPLEVEL::insert::chorus | 128), TOPLEVEL::type::Integer);}
+ send_data(TOPLEVEL::action::forceUpdate, 16, o->value(), (EFFECT::type::chorus), TOPLEVEL::type::Integer);}
xywh {121 13 96 16} down_box BORDER_BOX color 14 selection_color 0 labelsize 11 textfont 1 textsize 10 textcolor 7
code0 {o->add("Chorus 1");o->add("Chorus 2");o->add("Chorus 3");o->add("Celeste 1");o->add("Celeste 2");o->add("Flange 1");o->add("Flange 2");o->add("Flange 3");o->add("Flange 4");o->add("Flange 5");}
} {}
Fl_Choice chorusp4 {
label {LFO type}
callback {//
- send_data(0, 4, o->value(), (TOPLEVEL::insert::chorus | 128), TOPLEVEL::type::Integer);}
+ send_data(0, 4, o->value(), (EFFECT::type::chorus), TOPLEVEL::type::Integer);}
tooltip {LFO function} xywh {189 65 43 15} down_box BORDER_BOX labelsize 10 align 2 textfont 1 textsize 9
code0 {o->add("Sine");o->add("Tri");}
} {}
Fl_Dial chorusp0 {
label Vol
callback {//
- send_data(0, 0, o->value(), (TOPLEVEL::insert::chorus | 128), TOPLEVEL::type::Integer);}
+ send_data(0, 0, o->value(), (EFFECT::type::chorus), TOPLEVEL::type::Integer);}
xywh {10 49 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_FXdefaultVol);}
class WidgetPDial
@@ -486,7 +486,7 @@
label Pan
callback {//
int butt = 1;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::chorus | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::chorus), TOPLEVEL::type::Integer);}
xywh {45 49 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_PanningStd);}
class WidgetPDial
@@ -495,7 +495,7 @@
label Freq
callback {//
int butt = 2;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::chorus | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::chorus), TOPLEVEL::type::Integer);}
tooltip {LFO frequency} xywh {85 49 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(eff->geteffectpar(EFFECT::control::bpm) ? VC_FXlfofreqBPM : VC_FXlfofreq);}
class WidgetPDial
@@ -503,7 +503,7 @@
Fl_Dial chorusp18 {
label Start
callback {//
- send_data(0, EFFECT::control::bpmStart, o->value(), (TOPLEVEL::insert::chorus | 128), TOPLEVEL::type::Integer);}
+ send_data(0, EFFECT::control::bpmStart, o->value(), (EFFECT::type::chorus), TOPLEVEL::type::Integer);}
tooltip {Start of LFO phase relative to start of beat. This has no effect unless you are syncing to a song position, using MIDI or a plugin host.} xywh {120 50 30 30} box ROUND_UP_BOX labelsize 11 when 4 maximum 127
code0 {o->setValueType(VC_PhaseOffset);}
code1 {if (eff->geteffectpar(EFFECT::control::bpm)) o->activate(); else o->deactivate();}
@@ -513,7 +513,7 @@
label Rnd
callback {//
int butt = 3;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::chorus | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::chorus), TOPLEVEL::type::Integer);}
tooltip {LFO randomness} xywh {155 49 30 30} box ROUND_UP_BOX labelsize 11 when 4 maximum 127
code0 {o->setValueType(VC_percent127);}
class WidgetPDial
@@ -522,7 +522,7 @@
label {St.df}
callback {//
int butt = 5;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::chorus | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::chorus), TOPLEVEL::type::Integer);}
tooltip {L/R phase shift} xywh {237 49 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_FXlfoStereo);}
class WidgetPDial
@@ -531,7 +531,7 @@
label Dpth
callback {//
int butt = 6;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::chorus | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::chorus), TOPLEVEL::type::Integer);}
tooltip {LFO depth} xywh {272 49 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_FXChorusDepth);}
class WidgetPDial
@@ -540,7 +540,7 @@
label Delay
callback {//
int butt = 7;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::chorus | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::chorus), TOPLEVEL::type::Integer);}
xywh {307 49 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_FXChorusDelay);}
class WidgetPDial
@@ -549,7 +549,7 @@
label Fb
callback {//
int butt =8;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::chorus | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::chorus), TOPLEVEL::type::Integer);}
tooltip Feedback xywh {342 49 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_FXdefaultFb);}
class WidgetPDial
@@ -558,7 +558,7 @@
label {L/R}
callback {//
int butt = 9;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::chorus | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::chorus), TOPLEVEL::type::Integer);}
tooltip {Channel routing} xywh {254 15 30 30} box ROUND_UP_BOX labelsize 11 align 1 maximum 127
code0 {o->setValueType(VC_percent127);}
class WidgetPDial
@@ -566,7 +566,7 @@
Fl_Check_Button chorusflange {
label Flange
callback {//
- send_data(0, 10, o->value(), (TOPLEVEL::insert::chorus | 128), TOPLEVEL::type::Integer);}
+ send_data(0, 10, o->value(), (EFFECT::type::chorus), TOPLEVEL::type::Integer);}
xywh {120 10 55 20} box THIN_UP_BOX down_box DOWN_BOX color 230 labelfont 1 labelsize 10 hide deactivate
code0 {o->value(eff->geteffectpar(10));}
class Fl_Check_Button2
@@ -574,14 +574,14 @@
Fl_Check_Button chorusp11 {
label Subtract
callback {//
- send_data(0, 11, o->value(), (TOPLEVEL::insert::chorus | 128), TOPLEVEL::type::Integer);}
+ send_data(0, 11, o->value(), (EFFECT::type::chorus), TOPLEVEL::type::Integer);}
tooltip {Inverts the output} xywh {300 19 70 16} down_box DOWN_BOX color 230 labelsize 11
class Fl_Check_Button2
}
Fl_Check_Button chorusp17 {
label BPM
callback {//
- send_data(0, EFFECT::control::bpm, o->value(), (TOPLEVEL::insert::chorus | 128), TOPLEVEL::type::Integer);}
+ send_data(0, EFFECT::control::bpm, o->value(), (EFFECT::type::chorus), TOPLEVEL::type::Integer);}
tooltip {Synchronize the frequency to a multiple of the BPM.} xywh {190 45 50 15} down_box DOWN_BOX labelsize 11
}
}
@@ -598,21 +598,21 @@
Fl_Choice phaserp {
label Preset
callback {//
- send_data(TOPLEVEL::action::forceUpdate, 16, o->value(), (TOPLEVEL::insert::phaser | 128), TOPLEVEL::type::Integer);}
+ send_data(TOPLEVEL::action::forceUpdate, 16, o->value(), (EFFECT::type::phaser), TOPLEVEL::type::Integer);}
xywh {65 21 82 15} box UP_BOX down_box BORDER_BOX color 14 selection_color 0 labelsize 11 align 1 textfont 1 textsize 10 textcolor 7
code0 {o->add("Phaser 1");o->add("Phaser 2");o->add("Phaser 3");o->add("Phaser 4");o->add("Phaser 5");o->add("Phaser 6");o->add("APhaser 1");o->add("APhaser 2");o->add("APhaser 3");o->add("APhaser 4");o->add("APhaser 5");o->add("APhaser 6");}
} {}
Fl_Choice phaserp4 {
label {LFO Type}
callback {//
- send_data(0, 4, o->value(), (TOPLEVEL::insert::phaser | 128), TOPLEVEL::type::Integer);}
+ send_data(0, 4, o->value(), (EFFECT::type::phaser), TOPLEVEL::type::Integer);}
tooltip {LFO function} xywh {199 65 43 15} down_box BORDER_BOX labelsize 10 align 2 textfont 1 textsize 9
code0 {o->add("Sine");o->add("Tri");}
} {}
Fl_Dial phaserp0 {
label Vol
callback {//
- send_data(0, 0, o->value(), (TOPLEVEL::insert::phaser | 128), TOPLEVEL::type::Integer);}
+ send_data(0, 0, o->value(), (EFFECT::type::phaser), TOPLEVEL::type::Integer);}
tooltip {Effect volume} xywh {8 50 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_FXdefaultVol);}
class WidgetPDial
@@ -621,7 +621,7 @@
label Pan
callback {//
int butt = 1;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::phaser | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::phaser), TOPLEVEL::type::Integer);}
xywh {46 50 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_PanningStd);}
class WidgetPDial
@@ -630,7 +630,7 @@
label Freq
callback {//
int butt = 2;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::phaser | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::phaser), TOPLEVEL::type::Integer);}
tooltip {LFO frequency} xywh {84 50 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(eff->geteffectpar(EFFECT::control::bpm) ? VC_FXlfofreqBPM : VC_FXlfofreq);}
class WidgetPDial
@@ -638,7 +638,7 @@
Fl_Dial phaserp18 {
label Start
callback {//
- send_data(0, EFFECT::control::bpmStart, o->value(), (TOPLEVEL::insert::phaser | 128), TOPLEVEL::type::Integer);}
+ send_data(0, EFFECT::control::bpmStart, o->value(), (EFFECT::type::phaser), TOPLEVEL::type::Integer);}
tooltip {Start of LFO phase relative to start of beat. This has no effect unless you are syncing to a song position, using MIDI or a plugin host.} xywh {125 50 30 30} box ROUND_UP_BOX labelsize 11 when 4 maximum 127
code0 {o->setValueType(VC_PhaseOffset);}
code1 {if (eff->geteffectpar(EFFECT::control::bpm)) o->activate(); else o->deactivate();}
@@ -648,7 +648,7 @@
label Rnd
callback {//
int butt = 3;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::phaser | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::phaser), TOPLEVEL::type::Integer);}
tooltip {LFO randomness} xywh {165 50 30 30} box ROUND_UP_BOX labelsize 11 when 4 maximum 127
code0 {o->setValueType(VC_percent127);}
class WidgetPDial
@@ -656,7 +656,7 @@
Fl_Check_Button phaserp17 {
label BPM
callback {//
- send_data(0, EFFECT::control::bpm, o->value(), (TOPLEVEL::insert::phaser | 128), TOPLEVEL::type::Integer);}
+ send_data(0, EFFECT::control::bpm, o->value(), (EFFECT::type::phaser), TOPLEVEL::type::Integer);}
tooltip {Synchronize the frequency to a multiple of the BPM.} xywh {200 47 17 15} down_box DOWN_BOX labelsize 11 align 8
code0 {o->value(eff->geteffectpar(EFFECT::control::bpm));}
class Fl_Check_Button2
@@ -665,7 +665,7 @@
label {St.df}
callback {//
int butt = 5;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::phaser | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::phaser), TOPLEVEL::type::Integer);}
tooltip {Left/Right channel phase shift} xywh {248 50 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_FXlfoStereo);}
class WidgetPDial
@@ -674,7 +674,7 @@
label Depth
callback {//
int butt = 6;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::phaser | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::phaser), TOPLEVEL::type::Integer);}
tooltip {LFO depth} xywh {191 15 30 30} box ROUND_UP_BOX labelsize 11 align 1 maximum 127
code0 {o->setValueType(VC_percent127);}
class WidgetPDial
@@ -683,7 +683,7 @@
label Fb
callback {//
int butt = 7;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::phaser | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::phaser), TOPLEVEL::type::Integer);}
tooltip Feedback xywh {286 50 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_FXdefaultFb);}
class WidgetPDial
@@ -691,14 +691,14 @@
Fl_Counter phaserp8 {
label Stages
callback {//
- send_data(0, 8, o->value(), (TOPLEVEL::insert::phaser | 128), TOPLEVEL::type::Integer);}
+ send_data(0, 8, o->value(), (EFFECT::type::phaser), TOPLEVEL::type::Integer);}
xywh {326 63 45 15} type Simple labelsize 11 minimum 1 maximum 12 step 1 textfont 1 textsize 11
}
Fl_Dial phaserp9 {
label {L/R}
callback {//
int butt = 9;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::phaser | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::phaser), TOPLEVEL::type::Integer);}
tooltip {Channel routing} xywh {229 15 30 30} box ROUND_UP_BOX labelsize 11 align 1 maximum 127
code0 {o->setValueType(VC_percent127);}
class WidgetPDial
@@ -706,7 +706,7 @@
Fl_Check_Button phaserp10 {
label {Sub.}
callback {//
- send_data(0, 10, o->value(), (TOPLEVEL::insert::phaser | 128), TOPLEVEL::type::Integer);}
+ send_data(0, 10, o->value(), (EFFECT::type::phaser), TOPLEVEL::type::Integer);}
tooltip {Inverts the output} xywh {356 42 17 16} down_box DOWN_BOX color 230 labelsize 11 align 4
class Fl_Check_Button2
}
@@ -714,7 +714,7 @@
label Phase
callback {//
int butt = 11;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::phaser | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::phaser), TOPLEVEL::type::Integer);}
xywh {150 15 30 30} box ROUND_UP_BOX labelsize 11 align 1 maximum 127
code0 {o->setValueType(VC_percent127);}
class WidgetPDial
@@ -722,7 +722,7 @@
Fl_Check_Button phaserp12 {
label Hyper
callback {//
- send_data(0, 12, o->value(), (TOPLEVEL::insert::phaser | 128), TOPLEVEL::type::Integer);}
+ send_data(0, 12, o->value(), (EFFECT::type::phaser), TOPLEVEL::type::Integer);}
tooltip {Hyper-sine} xywh {356 26 17 15} down_box DOWN_BOX labelsize 11 align 4 deactivate
class Fl_Check_Button2
}
@@ -730,7 +730,7 @@
label Dist
callback {//
int butt = 13;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::phaser | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::phaser), TOPLEVEL::type::Integer);}
tooltip Distortion xywh {267 15 30 30} box ROUND_UP_BOX labelsize 11 align 1 maximum 127 deactivate
code0 {o->setValueType(VC_percent127);}
class WidgetPDial
@@ -738,7 +738,7 @@
Fl_Check_Button phaserp14 {
label Analog
callback {//
- send_data(TOPLEVEL::action::forceUpdate, 14, o->value(), (TOPLEVEL::insert::phaser | 128), TOPLEVEL::type::Integer);}
+ send_data(TOPLEVEL::action::forceUpdate, 14, o->value(), (EFFECT::type::phaser), TOPLEVEL::type::Integer);}
tooltip {Emulates FET} xywh {356 10 17 15} down_box DOWN_BOX labelsize 11 align 4
class Fl_Check_Button2
}
@@ -756,21 +756,21 @@
Fl_Choice awp {
label Preset
callback {//
- send_data(TOPLEVEL::action::forceUpdate, 16, o->value(), (TOPLEVEL::insert::alienWah | 128), TOPLEVEL::type::Integer);}
+ send_data(TOPLEVEL::action::forceUpdate, 16, o->value(), (EFFECT::type::alienWah), TOPLEVEL::type::Integer);}
xywh {135 13 96 15} down_box BORDER_BOX color 14 selection_color 0 labelsize 11 textfont 1 textsize 10 textcolor 7
code0 {o->add("Alienwah 1");o->add("Alienwah 2");o->add("Alienwah 3");o->add("Alienwah 4");}
} {}
Fl_Choice awp4 {
label {LFO type}
callback {//
- send_data(0, 4, o->value(), (TOPLEVEL::insert::alienWah | 128), TOPLEVEL::type::Integer);}
+ send_data(0, 4, o->value(), (EFFECT::type::alienWah), TOPLEVEL::type::Integer);}
tooltip {LFO function} xywh {185 65 43 15} down_box BORDER_BOX labelsize 10 align 2 textfont 1 textsize 9
code0 {o->add("Sine");o->add("Tri");}
} {}
Fl_Dial awp0 {
label Vol
callback {//
- send_data(0, 0, o->value(), (TOPLEVEL::insert::alienWah | 128), TOPLEVEL::type::Integer);}
+ send_data(0, 0, o->value(), (EFFECT::type::alienWah), TOPLEVEL::type::Integer);}
tooltip {Effect volume} xywh {5 49 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
class WidgetPDial
}
@@ -778,7 +778,7 @@
label Pan
callback {//
int butt = 1;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::alienWah | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::alienWah), TOPLEVEL::type::Integer);}
xywh {40 49 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
class WidgetPDial
}
@@ -786,7 +786,7 @@
label Freq
callback {//
int butt = 2;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::alienWah | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::alienWah), TOPLEVEL::type::Integer);}
tooltip {LFO frequency} xywh {80 49 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(eff->geteffectpar(EFFECT::control::bpm) ? VC_FXlfofreqBPM : VC_FXlfofreq);}
class WidgetPDial
@@ -795,7 +795,7 @@
label Rnd
callback {//
int butt = 3;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::alienWah | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::alienWah), TOPLEVEL::type::Integer);}
tooltip {LFO randomness} xywh {150 50 30 30} box ROUND_UP_BOX labelsize 11 when 4 maximum 127
code0 {o->setValueType(VC_percent127);}
class WidgetPDial
@@ -803,7 +803,7 @@
Fl_Dial awp18 {
label Start
callback {//
- send_data(0, EFFECT::control::bpmStart, o->value(), (TOPLEVEL::insert::alienWah | 128), TOPLEVEL::type::Integer);}
+ send_data(0, EFFECT::control::bpmStart, o->value(), (EFFECT::type::alienWah), TOPLEVEL::type::Integer);}
tooltip {Start of LFO phase relative to start of beat. This has no effect unless you are syncing to a song position, using MIDI or a plugin host.} xywh {115 50 30 30} box ROUND_UP_BOX labelsize 11 when 4 maximum 127
code0 {o->setValueType(VC_PhaseOffset);}
code1 {if (eff->geteffectpar(EFFECT::control::bpm)) o->activate(); else o->deactivate();}
@@ -813,7 +813,7 @@
label {St.df}
callback {//
int butt = 5;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::alienWah | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::alienWah), TOPLEVEL::type::Integer);}
tooltip {Left/Right channel phase shift} xywh {231 49 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
class WidgetPDial
}
@@ -821,7 +821,7 @@
label Dpth
callback {//
int butt = 6;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::alienWah | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::alienWah), TOPLEVEL::type::Integer);}
tooltip Depth xywh {266 49 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
class WidgetPDial
}
@@ -829,7 +829,7 @@
label Fb
callback {//
int butt = 7;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::alienWah | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::alienWah), TOPLEVEL::type::Integer);}
tooltip Feedback xywh {301 49 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
class WidgetPDial
}
@@ -837,7 +837,7 @@
label {L/R}
callback {//
int butt = 9;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::alienWah | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::alienWah), TOPLEVEL::type::Integer);}
xywh {285 15 30 30} box ROUND_UP_BOX labelsize 11 align 1 maximum 127
class WidgetPDial
}
@@ -845,27 +845,27 @@
label Phase
callback {//
int butt = 10;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::alienWah | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::alienWah), TOPLEVEL::type::Integer);}
xywh {245 15 30 30} box ROUND_UP_BOX labelsize 11 align 1 maximum 127
class WidgetPDial
}
Fl_Counter awp8 {
label Delay
callback {//
- send_data(0, 8, o->value(), (TOPLEVEL::insert::alienWah | 128), TOPLEVEL::type::Integer);}
+ send_data(0, 8, o->value(), (EFFECT::type::alienWah), TOPLEVEL::type::Integer);}
xywh {338 64 35 15} type Simple labelsize 11 minimum 0 maximum 100 step 1 textsize 11
}
Fl_Check_Button awp17 {
label BPM
callback {//
- send_data(0, EFFECT::control::bpm, o->value(), (TOPLEVEL::insert::alienWah | 128), TOPLEVEL::type::Integer);}
+ send_data(0, EFFECT::control::bpm, o->value(), (EFFECT::type::alienWah), TOPLEVEL::type::Integer);}
tooltip {Synchronize the frequency to a multiple of the BPM.} xywh {185 45 45 15} down_box DOWN_BOX labelsize 11
code0 {o->value(eff->geteffectpar(EFFECT::control::bpm));}
}
}
}
- Function {make_distorsion_window()} {} {
- Fl_Window effdistorsionwindow {
+ Function {make_distortion_window()} {} {
+ Fl_Window effdistortionwindow {
xywh {879 667 380 95} type Double box PLASTIC_UP_BOX color 221 labelfont 1 hide
class Fl_Group
} {
@@ -876,21 +876,21 @@
Fl_Choice distp {
label Preset
callback {//
- send_data(TOPLEVEL::action::forceUpdate, 16, o->value(), (TOPLEVEL::insert::distortion | 128), TOPLEVEL::type::Integer);}
+ send_data(TOPLEVEL::action::forceUpdate, 16, o->value(), (EFFECT::type::distortion), TOPLEVEL::type::Integer);}
xywh {139 13 96 16} down_box BORDER_BOX color 14 selection_color 0 labelsize 11 textfont 1 textsize 10 textcolor 7
code0 {o->add("Overdrive 1");o->add("Overdrive 2");o->add("Exciter 1");o->add("Exciter 2");o->add("Guitar Amp");o->add("Quantize");}
} {}
Fl_Choice distp5 {
label Type
callback {//
- send_data(0, 5, o->value(), (TOPLEVEL::insert::distortion | 128), TOPLEVEL::type::Integer);}
+ send_data(0, 5, o->value(), (EFFECT::type::distortion), TOPLEVEL::type::Integer);}
xywh {192 56 60 15} box UP_BOX down_box BORDER_BOX labelsize 10 align 2 textfont 1 textsize 9
code0 {o->add("Atan");o->add("Asym 1");o->add("Power1");o->add("Sine");o->add("Quants");o->add("Zigzag");o->add("Limit");o->add("LimtiU");o->add("LimitL");o->add("ILimit");o->add("Clip");o->add("Asym 2");o->add("Power2");o->add("Sigm");}
} {}
Fl_Dial distp0 {
label Vol
callback {//
- send_data(0, 0, o->value(), (TOPLEVEL::insert::distortion | 128), TOPLEVEL::type::Integer);}
+ send_data(0, 0, o->value(), (EFFECT::type::distortion), TOPLEVEL::type::Integer);}
tooltip {Effect volume} xywh {10 40 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_FXDistVol);}
class WidgetPDial
@@ -899,7 +899,7 @@
label Pan
callback {//
int butt = 1;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::distortion | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::distortion), TOPLEVEL::type::Integer);}
xywh {45 40 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_PanningStd);}
class WidgetPDial
@@ -908,7 +908,7 @@
label {LRc.}
callback {//
int butt = 2;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::distortion | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::distortion), TOPLEVEL::type::Integer);}
tooltip {L/R mix} xywh {80 40 30 30} box ROUND_UP_BOX labelsize 11 when 4 maximum 127
code0 {o->setValueType(VC_percent127);}
class WidgetPDial
@@ -917,7 +917,7 @@
label Drive
callback {//
int butt = 3;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::distortion | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::distortion), TOPLEVEL::type::Integer);}
tooltip {Input amplification} xywh {120 40 30 30} box ROUND_UP_BOX labelsize 11 when 4 maximum 127
code0 {o->setValueType(VC_percent127);}
class WidgetPDial
@@ -926,7 +926,7 @@
label Level
callback {//
int butt = 4;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::distortion | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::distortion), TOPLEVEL::type::Integer);}
tooltip {Output amplification} xywh {155 40 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_FXDistLevel);}
class WidgetPDial
@@ -935,7 +935,7 @@
label LPF
callback {//
int butt = 7;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::distortion | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::distortion), TOPLEVEL::type::Integer);}
tooltip {Low pass filter} xywh {285 40 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_FXDistLowPass);}
class WidgetPDial
@@ -944,7 +944,7 @@
label HPF
callback {//
int butt = 8;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::distortion | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::distortion), TOPLEVEL::type::Integer);}
tooltip {High pass filter} xywh {320 40 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_FXDistHighPass);}
class WidgetPDial
@@ -952,21 +952,21 @@
Fl_Check_Button distp6 {
label {Neg.}
callback {//
- send_data(0, 6, o->value(), (TOPLEVEL::insert::distortion | 128), TOPLEVEL::type::Integer);}
+ send_data(0, 6, o->value(), (EFFECT::type::distortion), TOPLEVEL::type::Integer);}
xywh {260 55 15 15} down_box DOWN_BOX labelsize 11 align 2
class Fl_Check_Button2
}
Fl_Check_Button distp9 {
label {St.}
callback {//
- send_data(0, 9, o->value(), (TOPLEVEL::insert::distortion | 128), TOPLEVEL::type::Integer);}
+ send_data(0, 9, o->value(), (EFFECT::type::distortion), TOPLEVEL::type::Integer);}
tooltip Stereo xywh {357 55 15 15} down_box DOWN_BOX labelsize 11 align 2
class Fl_Check_Button2
}
Fl_Check_Button distp10 {
label PF
callback {//
- send_data(0, 10, o->value(), (TOPLEVEL::insert::distortion | 128), TOPLEVEL::type::Integer);}
+ send_data(0, 10, o->value(), (EFFECT::type::distortion), TOPLEVEL::type::Integer);}
tooltip {Applies the filters(before or after) the distortion} xywh {357 38 15 15} down_box DOWN_BOX labelsize 11 align 1
class Fl_Check_Button2
}
@@ -984,7 +984,7 @@
Fl_Dial eqp0 {
label Gain
callback {//
- send_data(TOPLEVEL::action::forceUpdate, 0, o->value(), (TOPLEVEL::insert::eq | 128), TOPLEVEL::type::Integer);}
+ send_data(TOPLEVEL::action::forceUpdate, 0, o->value(), (EFFECT::type::eq), TOPLEVEL::type::Integer);}
xywh {10 41 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(VC_FXEQgain);}
class WidgetPDial
@@ -992,7 +992,7 @@
Fl_Counter bandcounter {
label Band
callback {//
- send_data(TOPLEVEL::action::forceUpdate, 1, o->value(), (TOPLEVEL::insert::eq | 128), TOPLEVEL::type::Integer);}
+ send_data(TOPLEVEL::action::forceUpdate, 1, o->value(), (EFFECT::type::eq), TOPLEVEL::type::Integer);}
tooltip {Band no.} xywh {263 20 45 15} type Simple labelsize 11 align 1 minimum 0 maximum 1 step 1 textsize 11
code0 {o->bounds(0,MAX_EQ_BANDS-1);}
}
@@ -1002,7 +1002,7 @@
Fl_Dial freqdial {
label Freq
callback {//;
- send_data(TOPLEVEL::action::forceUpdate, 11, o->value(), (TOPLEVEL::insert::eq | 128), TOPLEVEL::type::Integer);}
+ send_data(TOPLEVEL::action::forceUpdate, 11, o->value(), (EFFECT::type::eq), TOPLEVEL::type::Integer);}
xywh {247 50 25 25} box ROUND_UP_BOX labelsize 10 when 3 maximum 127
code0 {o->setValueType(VC_FXEQfreq);}
class WidgetPDial
@@ -1010,7 +1010,7 @@
Fl_Dial gaindial {
label Gain
callback {//
- send_data(TOPLEVEL::action::forceUpdate, 12, o->value(), (TOPLEVEL::insert::eq | 128), TOPLEVEL::type::Integer);}
+ send_data(TOPLEVEL::action::forceUpdate, 12, o->value(), (EFFECT::type::eq), TOPLEVEL::type::Integer);}
xywh {277 50 25 25} box ROUND_UP_BOX labelsize 10 when 3 maximum 127 step 1
code0 {o->setValueType(VC_FXEQfilterGain);}
class WidgetPDial
@@ -1018,7 +1018,7 @@
Fl_Dial qdial {
label Q
callback {//
- send_data(TOPLEVEL::action::forceUpdate, 13, o->value(), (TOPLEVEL::insert::eq | 128), TOPLEVEL::type::Integer);}
+ send_data(TOPLEVEL::action::forceUpdate, 13, o->value(), (EFFECT::type::eq), TOPLEVEL::type::Integer);}
tooltip {Resonance/Bandwidth} xywh {307 50 25 25} box ROUND_UP_BOX labelsize 10 when 3 maximum 127
code0 {o->setValueType(VC_FXEQq);}
class WidgetPDial
@@ -1026,7 +1026,7 @@
Fl_Counter stagescounter {
label Stages
callback {//
- send_data(TOPLEVEL::action::forceUpdate, 14, o->value(), (TOPLEVEL::insert::eq | 128), TOPLEVEL::type::Integer);}
+ send_data(TOPLEVEL::action::forceUpdate, 14, o->value(), (EFFECT::type::eq), TOPLEVEL::type::Integer);}
tooltip {Additional filter stages} xywh {337 60 30 15} type Simple labelsize 10 minimum 1 maximum 127 step 1 textfont 1 textsize 11
code0 {o->bounds(0,MAX_FILTER_STAGES-1);}
}
@@ -1034,7 +1034,7 @@
Fl_Choice typechoice {
label Type
callback {//
- send_data(TOPLEVEL::action::forceUpdate, 10, o->value(), (TOPLEVEL::insert::eq | 128), TOPLEVEL::type::Integer);}
+ send_data(TOPLEVEL::action::forceUpdate, 10, o->value(), (EFFECT::type::eq), TOPLEVEL::type::Integer);}
tooltip Type xywh {323 20 40 15} down_box BORDER_BOX labelsize 11 align 1 when 6 textfont 1 textsize 9
code0 {o->add("Off");o->add("Lp1");o->add("Hp1");o->add("Lp2");o->add("Hp2");o->add("Bp2");o->add("N2");o->add("Pk");o->add("LSh");o->add("HSh");}
} {}
@@ -1056,21 +1056,21 @@
Fl_Choice dfp {
label Preset
callback {//
- send_data(TOPLEVEL::action::forceUpdate, 16, o->value(), (TOPLEVEL::insert::dynFilter | 128), TOPLEVEL::type::Integer);}
+ send_data(TOPLEVEL::action::forceUpdate, 16, o->value(), (EFFECT::type::dynFilter), TOPLEVEL::type::Integer);}
xywh {132 13 90 16} down_box BORDER_BOX color 14 selection_color 0 labelsize 11 textfont 1 textsize 10 textcolor 7
code0 {o->add("WahWah");o->add("AutoWah");o->add("Sweep");o->add("VocalMorph1");o->add("VocalMorph2");}
} {}
Fl_Choice dfp4 {
label {LFO type}
callback {//
- send_data(0, 4, o->value(), (TOPLEVEL::insert::dynFilter | 128), TOPLEVEL::type::Integer);}
+ send_data(0, 4, o->value(), (EFFECT::type::dynFilter), TOPLEVEL::type::Integer);}
tooltip {LFO function} xywh {190 60 43 15} down_box BORDER_BOX labelsize 10 align 2 textfont 1 textsize 9
code0 {o->add("Sine");o->add("Tri");}
} {}
Fl_Dial dfp0 {
label Vol
callback {//
- send_data(0, 0, o->value(), (TOPLEVEL::insert::dynFilter | 128), TOPLEVEL::type::Integer);}
+ send_data(0, 0, o->value(), (EFFECT::type::dynFilter), TOPLEVEL::type::Integer);}
tooltip {Effect volume} xywh {6 44 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
class WidgetPDial
}
@@ -1078,7 +1078,7 @@
label Pan
callback {//
int butt = 1;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::dynFilter | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::dynFilter), TOPLEVEL::type::Integer);}
xywh {42 44 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
class WidgetPDial
}
@@ -1086,7 +1086,7 @@
label Freq
callback {//
int butt = 2;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::dynFilter | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::dynFilter), TOPLEVEL::type::Integer);}
tooltip {LFO frequency} xywh {80 44 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
code0 {o->setValueType(eff->geteffectpar(EFFECT::control::bpm) ? VC_FXlfofreqBPM : VC_FXlfofreq);}
class WidgetPDial
@@ -1095,7 +1095,7 @@
label Rnd
callback {//
int butt = 3;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::dynFilter | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::dynFilter), TOPLEVEL::type::Integer);}
tooltip {LFO randomness} xywh {155 44 30 30} box ROUND_UP_BOX labelsize 11 when 4 maximum 127
code0 {o->setValueType(VC_percent127);}
class WidgetPDial
@@ -1103,7 +1103,7 @@
Fl_Dial dfp18 {
label Start
callback {//
- send_data(0, EFFECT::control::bpmStart, o->value(), (TOPLEVEL::insert::dynFilter | 128), TOPLEVEL::type::Integer);}
+ send_data(0, EFFECT::control::bpmStart, o->value(), (EFFECT::type::dynFilter), TOPLEVEL::type::Integer);}
tooltip {Start of LFO phase relative to start of beat. This has no effect unless you are syncing to a song position, using MIDI or a plugin host.} xywh {118 44 30 30} box ROUND_UP_BOX labelsize 11 when 4 maximum 127
code0 {o->setValueType(VC_PhaseOffset);}
code1 {if (eff->geteffectpar(EFFECT::control::bpm)) o->activate(); else o->deactivate();}
@@ -1112,14 +1112,14 @@
Fl_Dial dfp5 {
label {St.df}
callback {int butt = 5;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::dynFilter | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::dynFilter), TOPLEVEL::type::Integer);}
tooltip {Left/Right channel phase shift} xywh {240 49 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
class WidgetPDial
}
Fl_Dial dfp6 {
label LfoD
callback {int butt = 6;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::dynFilter | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::dynFilter), TOPLEVEL::type::Integer);}
tooltip {LFO depth} xywh {240 8 30 30} box ROUND_UP_BOX labelsize 11 align 8 maximum 127
class WidgetPDial
}
@@ -1134,21 +1134,21 @@
Fl_Dial dfp7 {
label {A.S.}
callback {int butt = 7;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::dynFilter | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::dynFilter), TOPLEVEL::type::Integer);}
tooltip {Filter vs amplitude} xywh {282 44 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
class WidgetPDial
}
Fl_Dial dfp9 {
label {A.M}
callback {int butt = 9;
- send_data(0, butt, o->value(), (TOPLEVEL::insert::dynFilter | 128), TOPLEVEL::type::Integer);}
+ send_data(0, butt, o->value(), (EFFECT::type::dynFilter), TOPLEVEL::type::Integer);}
tooltip {Rate that amplitude changes the filter} xywh {318 44 30 30} box ROUND_UP_BOX labelsize 11 maximum 127
class WidgetPDial
}
Fl_Check_Button dfp8 {
label {Inv.}
callback {//
- send_data(0, 8, o->value(), (TOPLEVEL::insert::dynFilter | 128), TOPLEVEL::type::Integer);}
+ send_data(0, 8, o->value(), (EFFECT::type::dynFilter), TOPLEVEL::type::Integer);}
tooltip {Enable for filter frequency to lower with higher input amplitude} xywh {353 58 15 15} down_box DOWN_BOX labelsize 11 align 2
class Fl_Check_Button2
}
@@ -1156,7 +1156,7 @@
Fl_Check_Button dfp17 {
label BPM
callback {//
- send_data(0, EFFECT::control::bpm, o->value(), (TOPLEVEL::insert::dynFilter | 128), TOPLEVEL::type::Integer);}
+ send_data(0, EFFECT::control::bpm, o->value(), (EFFECT::type::dynFilter), TOPLEVEL::type::Integer);}
tooltip {Synchronize the frequency to a multiple of the BPM.} xywh {191 41 45 15} down_box DOWN_BOX labelsize 11
code0 {o->value(eff->geteffectpar(EFFECT::control::bpm));}
}
@@ -1174,7 +1174,7 @@
Fl_Group fwin_filterui {
label {DynFilter effect - Filter}
xywh {5 5 275 75} box FLAT_BOX color 50 labelsize 12 align 144
- code0 {o->init(eff->filterpars,NULL,NULL, npart, (TOPLEVEL::insert::dynFilter | 128), neff);}
+ code0 {o->init(eff->filterpars,NULL,NULL, npart, (EFFECT::type::dynFilter), neff);}
class FilterUI
} {}
Fl_Button filterclose {
@@ -1203,19 +1203,19 @@
unsigned char control = getData->data.control;
unsigned char efftype = getData->data.kit;
unsigned char effnum = getData->data.engine;
- bool isdynfilter = (effnum == (TOPLEVEL::insert::dynFilter | 128));
+ bool isdynfilter = (effnum == (EFFECT::type::dynFilter));
unsigned char secondary = getData->data.offset;
int textCol = 14;
if (fetchData(0, EFFECT::control::changed, getData->data.part, efftype, effnum) != 0)
textCol = FL_BLUE;
//cout << "colour " << textCol << endl;
- switch(efftype & 127)
+ switch(efftype)
{
- case TOPLEVEL::insert::none:
+ case EFFECT::type::none:
break;
- case TOPLEVEL::insert::reverb:
+ case EFFECT::type::reverb:
switch (control)
{
case EFFECT::control::level:
@@ -1269,7 +1269,7 @@
revp->redraw();
break;
- case TOPLEVEL::insert::echo:
+ case EFFECT::type::echo:
switch (control)
{
case EFFECT::control::level:
@@ -1308,7 +1308,7 @@
echop->redraw();
break;
- case TOPLEVEL::insert::chorus:
+ case EFFECT::type::chorus:
switch (control)
{
case EFFECT::control::level:
@@ -1365,7 +1365,7 @@
chorusp->redraw();
break;
- case TOPLEVEL::insert::phaser:
+ case EFFECT::type::phaser:
switch (control)
{
case EFFECT::control::level:
@@ -1451,7 +1451,7 @@
phaserp->redraw();
break;
- case TOPLEVEL::insert::alienWah:
+ case EFFECT::type::alienWah:
switch (control)
{
case EFFECT::control::level:
@@ -1511,7 +1511,7 @@
awp->redraw();
break;
- case TOPLEVEL::insert::distortion:
+ case EFFECT::type::distortion:
switch (control)
{
case EFFECT::control::level:
@@ -1555,7 +1555,7 @@
distp->redraw();
break;
- case TOPLEVEL::insert::eq:
+ case EFFECT::type::eq:
//synth->getRuntime().Log("EQ " + to_string(value_int) + " " + to_string(int(control)));
if (control == EFFECT::control::level)
{
@@ -1601,7 +1601,7 @@
effeqwindow->redraw();
break;
- case TOPLEVEL::insert::dynFilter:
+ case EFFECT::type::dynFilter:
if (isdynfilter)
{ // shouldn't get here
//cout << "DyneFilter" << endl;
@@ -1677,7 +1677,7 @@
make_chorus_window();
make_phaser_window();
make_alienwah_window();
- make_distorsion_window();
+ make_distortion_window();
make_eq_window();
make_dynamicfilter_window();
@@ -1690,7 +1690,7 @@
effchoruswindow->position(px,py);
effphaserwindow->position(px,py);
effalienwahwindow->position(px,py);
- effdistorsionwindow->position(px,py);
+ effdistortionwindow->position(px,py);
effeqwindow->position(px,py);
effdynamicfilterwindow->position(px,py);
refresh(eff, npart, neff);} {}
@@ -1707,7 +1707,7 @@
effchoruswindow->hide();
effphaserwindow->hide();
effalienwahwindow->hide();
- effdistorsionwindow->hide();
+ effdistortionwindow->hide();
effeqwindow->hide();
effdynamicfilterwindow->hide();
eqband=0;
@@ -1717,9 +1717,9 @@
delete(filterwindow);
filterwindow=NULL;
}
- switch(eff->geteffect())
+ switch(eff->geteffect() + EFFECT::type::none) // get effect not yet converted
{
- case TOPLEVEL::insert::reverb:
+ case EFFECT::type::reverb:
revp->value(eff->getpreset());
revp0->value(eff->geteffectpar(0));
if (eff->insertion != 0)
@@ -1740,7 +1740,7 @@
revp12->value(eff->geteffectpar(12));
effreverbwindow->show();
break;
- case TOPLEVEL::insert::echo:
+ case EFFECT::type::echo:
echop->value(eff->getpreset());
echop0->value(eff->geteffectpar(0));
if (eff->insertion != 0)
@@ -1757,7 +1757,7 @@
echop17->value(eff->geteffectpar(17));
effechowindow->show();
break;
- case TOPLEVEL::insert::chorus:
+ case EFFECT::type::chorus:
chorusp->value(eff->getpreset());
chorusp0->value(eff->geteffectpar(0));
if (eff->insertion != 0)
@@ -1789,7 +1789,7 @@
chorusp18->value(eff->geteffectpar(18));
effchoruswindow->show();
break;
- case TOPLEVEL::insert::phaser:
+ case EFFECT::type::phaser:
phaserp->value(eff->getpreset());
phaserp0->value(eff->geteffectpar(0));
if (eff->insertion != 0)
@@ -1840,7 +1840,7 @@
effphaserwindow->show();
break;
- case TOPLEVEL::insert::alienWah:
+ case EFFECT::type::alienWah:
awp->value(eff->getpreset());
awp0->value(eff->geteffectpar(0));
if (eff->insertion != 0)
@@ -1869,7 +1869,7 @@
awp18->value(eff->geteffectpar(18));
effalienwahwindow->show();
break;
- case TOPLEVEL::insert::distortion:
+ case EFFECT::type::distortion:
distp->value(eff->getpreset());
distp0->value(eff->geteffectpar(0));
if (eff->insertion != 0)
@@ -1887,9 +1887,9 @@
distp8->value(eff->geteffectpar(8));
distp9->value(eff->geteffectpar(9));
distp10->value(eff->geteffectpar(10));
- effdistorsionwindow->show();
+ effdistortionwindow->show();
break;
- case TOPLEVEL::insert::eq:
+ case EFFECT::type::eq:
{
eqband = 0;
int type = eff->geteffectpar(10);
@@ -1905,11 +1905,12 @@
gaindial->deactivate();
stagescounter->value(eff->geteffectpar(14));
eqgraph->init(eff);
+ eqgraph->damage(1);
eqgraph->redraw();
effeqwindow->show();
break;
}
- case TOPLEVEL::insert::dynFilter:
+ case EFFECT::type::dynFilter:
make_filter_window();
dfp->value(eff->getpreset());
dfp0->value(eff->geteffectpar(0));
@@ -1952,36 +1953,35 @@
int textCol = 14;
if (changed)
textCol = FL_BLUE;
-
- switch ((efftype & 127) + TOPLEVEL::insert::none)
+ switch (efftype + EFFECT::type::none)
{
- case TOPLEVEL::insert::reverb:
+ case EFFECT::type::reverb:
revp->color(textCol);
revp->redraw();
break;
- case TOPLEVEL::insert::echo:
+ case EFFECT::type::echo:
echop->color(textCol);
echop->redraw();
break;
- case TOPLEVEL::insert::chorus:
+ case EFFECT::type::chorus:
chorusp->color(textCol);
chorusp->redraw();
break;
- case TOPLEVEL::insert::phaser:
+ case EFFECT::type::phaser:
phaserp->color(textCol);
phaserp->redraw();
break;
- case TOPLEVEL::insert::alienWah:
+ case EFFECT::type::alienWah:
awp->color(textCol);
awp->redraw();
break;
- case TOPLEVEL::insert::distortion:
+ case EFFECT::type::distortion:
distp->color(textCol);
distp->redraw();
break;
- case TOPLEVEL::insert::eq:
+ case EFFECT::type::eq:
break;
- case TOPLEVEL::insert::dynFilter:
+ case EFFECT::type::dynFilter:
dfp->color(textCol);
dfp->redraw();
break;
diff -Nru yoshimi-2.2.1/src/UI/FilterUI.fl yoshimi-2.2.2.1/src/UI/FilterUI.fl
--- yoshimi-2.2.1/src/UI/FilterUI.fl 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/UI/FilterUI.fl 2022-09-14 22:56:29.000000000 +0000
@@ -920,17 +920,17 @@
bool fromUs = ((getData->data.source & TOPLEVEL::action::noAction) == TOPLEVEL::action::fromGUI);
- if (part != npart || (kititem != (TOPLEVEL::insert::dynFilter | 128) && eng != engine))
+ if (part != npart || (kititem != (EFFECT::type::dynFilter) && eng != engine))
return;
- if (kititem == (TOPLEVEL::insert::dynFilter | 128))
+ if (kititem == (EFFECT::type::dynFilter))
{
//cout << "Dyn filter seen part " << int(part)<< endl;
if (part == TOPLEVEL::section::systemEffects)
- synth->getGuiMaster()->syseffectui->UpdatePresetColour(1, TOPLEVEL::insert::dynFilter - TOPLEVEL::insert::none);
+ synth->getGuiMaster()->syseffectui->UpdatePresetColour(1, EFFECT::type::dynFilter - EFFECT::type::none);
else if (part == TOPLEVEL::section::insertEffects)
- synth->getGuiMaster()->inseffectui->UpdatePresetColour(1, TOPLEVEL::insert::dynFilter - TOPLEVEL::insert::none);
+ synth->getGuiMaster()->inseffectui->UpdatePresetColour(1, EFFECT::type::dynFilter - EFFECT::type::none);
else
- synth->getGuiMaster()->partui->inseffectui->UpdatePresetColour(1, TOPLEVEL::insert::dynFilter - TOPLEVEL::insert::none); // normal part effect
+ synth->getGuiMaster()->partui->inseffectui->UpdatePresetColour(1, EFFECT::type::dynFilter - EFFECT::type::none); // normal part effect
}
qdial->activate();
diff -Nru yoshimi-2.2.1/src/UI/MasterMiscUI.fl yoshimi-2.2.2.1/src/UI/MasterMiscUI.fl
--- yoshimi-2.2.1/src/UI/MasterMiscUI.fl 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/UI/MasterMiscUI.fl 2022-09-14 22:56:29.000000000 +0000
@@ -466,12 +466,8 @@
int newpart = npart | synth->getGuiMaster()->panelgroup;
synth->getGuiMaster()->activePart = npart + *plgroup;
if (Fl::event() == FL_RELEASE && Fl::event_button() == FL_RIGHT_MOUSE)
- {
- if (newpart == synth->getGuiMaster()->partui->npart)
- synth->getGuiMaster()->partui->Showedit();
- else
- synth->getGuiMaster()->openedit = true;
- }
+ synth->getGuiMaster()->partui->Showedit();
+
if ((int)bankui->cbwig->value() != (newpart + 1))
{
bankui->cbwig->value(newpart + 1);
diff -Nru yoshimi-2.2.1/src/UI/MasterUI.fl yoshimi-2.2.2.1/src/UI/MasterUI.fl
--- yoshimi-2.2.1/src/UI/MasterUI.fl 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/UI/MasterUI.fl 2022-09-14 22:56:29.000000000 +0000
@@ -414,7 +414,6 @@
vectorui = new VectorUI(synth, bankui, paramsui);
midilearnui = new MidiLearnUI(synth);
yoshiLog = new ConsoleUI(synth);
- openedit = false;
make_window();
bool foundWindows = Showmaster();
@@ -2587,11 +2586,14 @@
{
case PART::control::enable:
{
- partEnable->value(value);
- if (value)
- partControls->activate();
- else
- partControls->deactivate();
+ if (npart == newpart)
+ {
+ partEnable->value(value);
+ if (value)
+ partControls->activate();
+ else
+ partControls->deactivate();
+ }
if (panelVisible)
{
panellistitem[panelpart]->partenabled->value(value);
@@ -2984,26 +2986,11 @@
break;
case MAIN::control::partNumber:
- {
- //bool ctlmidiSeen = partui->ctlmidi->visible();
- //if(partui->instrumenteditwindow->visible())
- //openedit = true;
- // openedit also set by right click in mixer panel
- // might need further refinement
-
if ((getData->data.source & TOPLEVEL::action::noAction) != TOPLEVEL::action::fromGUI)
activePart = value_int;
partSwitch(activePart);
updatepanel();
- /*if (openedit)
- {
- partui->Showedit();
- openedit = false;
- }
- else
- partui->instrumenteditwindow->hide();*/
- }
break;
case MAIN::control::availableParts:
@@ -3106,7 +3093,6 @@
case MAIN::control::loadInstrumentByName:
updatepartprogram(kititem);
- //RecentInstruments->activate();
break;
case MAIN::control::saveNamedInstrument: // save instrument
@@ -3578,7 +3564,6 @@
updatelistitem(next); // select and/or modify
activePart = npart;
partui->rebuild(npart);
- partui->redraw();
partEnable->value(synth->part[npart]->Penabled == 1);
if (partEnable->value() == 1)
@@ -3707,46 +3692,6 @@
}
partSwitch(next);} {}
}
- Function {updateeffects(int data)} {} {
- code {//
- int partnum = data >> 24;
- int effclass = (data >> 22) & 3;
- int parameter = (data >> 8) & 0x7f;
-
- if (effclass == 2)
- {
- // will be part effects
- }
- else if (effclass == 1)
- {
- ninseff = parameter & 0x3f;
- sysinsgroup->value(InsertionEffectsGrp);
- showInsEfxUI();
- inseffnocounter->value(ninseff + 1);
- inseffpart->value(partnum);
- if (partnum != 1) // off
- {
- insefftype->activate();
- inseffectui->activate();
- }
- else
- {
- insefftype->deactivate();
- inseffectui->deactivate();
- }
- insefftype->value(synth->insefx[ninseff]->geteffect());
- inseffectui->refresh(synth->insefx[ninseff], TOPLEVEL::section::insertEffects, ninseff);
- }
- else
- {
- nsyseff = parameter & 0x3f;
- sysinsgroup->value(SystemEffectsGrp);
- syseffnocounter->value(nsyseff + 1);
- sysefftype->value(synth->sysefx[nsyseff]->geteffect());
- syseffectui->refresh(synth->sysefx[nsyseff], TOPLEVEL::section::systemEffects, nsyseff);
- showSysEfxUI();
- }} {}
- }
Function {setMasterLabel(string name)} {} {
code {//
string prefix;
@@ -3832,13 +3777,13 @@
int efftype = fetchData(0, EFFECT::sysIns::effectType, TOPLEVEL::section::systemEffects, UNUSED, 0);
if (efftype > 0)
{
- status = fetchData(0, EFFECT::control::changed, TOPLEVEL::section::systemEffects, efftype + (TOPLEVEL::insert::none | 128), ninseff);
+ status = fetchData(0, EFFECT::control::changed, TOPLEVEL::section::systemEffects, efftype + EFFECT::type::none, ninseff);
syseffectui->UpdatePresetColour(status, sysefftype->value());
}
efftype = fetchData(0,EFFECT::sysIns::effectType, TOPLEVEL::section::insertEffects, UNUSED, 0);
if (efftype > 0)
{
- status = fetchData(0, EFFECT::control::changed, TOPLEVEL::section::insertEffects, efftype + (TOPLEVEL::insert::none | 128), ninseff);
+ status = fetchData(0, EFFECT::control::changed, TOPLEVEL::section::insertEffects, efftype + EFFECT::type::none, ninseff);
inseffectui->UpdatePresetColour(status, insefftype->value());
}
@@ -4617,8 +4562,6 @@
}
decl {int msgGroup;} {private local
}
- decl {bool openedit;} {public local
- }
decl {float mainDW;} {private local
}
decl {float mainDH;} {private local
diff -Nru yoshimi-2.2.1/src/UI/MiscGui.cpp yoshimi-2.2.2.1/src/UI/MiscGui.cpp
--- yoshimi-2.2.1/src/UI/MiscGui.cpp 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/UI/MiscGui.cpp 2022-09-14 22:56:29.000000000 +0000
@@ -294,7 +294,7 @@
return;
}
- if (kititem >= (TOPLEVEL::insert::none | 128) && kititem != UNUSED) // effects
+ if (kititem >= EFFECT::type::none && kititem < EFFECT::type::count) // effects
{
if (npart == TOPLEVEL::section::systemEffects)
{
@@ -427,7 +427,7 @@
case TOPLEVEL::insert::oscillatorGroup:
case TOPLEVEL::insert::harmonicAmplitude:
- case TOPLEVEL::insert::harmonicPhaseBandwidth:
+ case TOPLEVEL::insert::harmonicPhase:
if (synth->getGuiMaster()->partui->padnoteui->oscui)
synth->getGuiMaster()->partui->padnoteui->oscui->returns_update(getData);
break;
@@ -480,7 +480,7 @@
break;
case UNUSED:
case TOPLEVEL::insert::harmonicAmplitude:
- case TOPLEVEL::insert::harmonicPhaseBandwidth:
+ case TOPLEVEL::insert::harmonicBandwidth:
synth->getGuiMaster()->partui->subnoteui->returns_update(getData);
break;
}
@@ -531,7 +531,7 @@
break;
case TOPLEVEL::insert::oscillatorGroup:
case TOPLEVEL::insert::harmonicAmplitude:
- case TOPLEVEL::insert::harmonicPhaseBandwidth:
+ case TOPLEVEL::insert::harmonicPhase:
if (synth->getGuiMaster()->partui->adnoteui->advoice->oscedit)
synth->getGuiMaster()->partui->adnoteui->advoice->oscedit->returns_update(getData);
break;
diff -Nru yoshimi-2.2.1/src/UI/OscilGenUI.fl yoshimi-2.2.2.1/src/UI/OscilGenUI.fl
--- yoshimi-2.2.1/src/UI/OscilGenUI.fl 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/UI/OscilGenUI.fl 2022-09-14 22:56:29.000000000 +0000
@@ -387,7 +387,7 @@
else
x = 64 - (int)o->value();
- send_data(TOPLEVEL::action::forceUpdate, TOPLEVEL::insert::harmonicPhaseBandwidth, n, x, TOPLEVEL::type::Integer);}
+ send_data(TOPLEVEL::action::forceUpdate, TOPLEVEL::insert::harmonicPhase, n, x, TOPLEVEL::type::Integer);}
xywh {0 140 15 82} type {Vert Knob} box FLAT_BOX minimum 64 maximum -63 step 1
code0 {o->value(64 - oscil->Phphase[n]);}
code1 {o->setValueType(VC_PhaseOffset); o->useCustomTip(true);}
@@ -855,7 +855,7 @@
h[control]->mag->value(64 - value);
}
- else if (insert == TOPLEVEL::insert::harmonicPhaseBandwidth)
+ else if (insert == TOPLEVEL::insert::harmonicPhase)
{
h[control]->phase->value(64 - value);
}
diff -Nru yoshimi-2.2.1/src/UI/PartUI.fl yoshimi-2.2.2.1/src/UI/PartUI.fl
--- yoshimi-2.2.1/src/UI/PartUI.fl 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/UI/PartUI.fl 2022-09-14 22:56:29.000000000 +0000
@@ -181,7 +181,7 @@
Fl_Button adeditbutton {
label edit
callback {//
- partui->showparameters(n,0);
+ partui->showparameters(n,PART::engine::addSynth);
if ((Fl::event_button() == 3))
synth->getGuiMaster()->partui->instrumentkitlist->hide();}
xywh {422 4 40 15} box THIN_UP_BOX labelsize 11
@@ -198,7 +198,7 @@
Fl_Button subeditbutton {
label edit
callback {//
- partui->showparameters(n,1);
+ partui->showparameters(n,PART::engine::subSynth);
if ((Fl::event_button() == 3))
synth->getGuiMaster()->partui->instrumentkitlist->hide();}
xywh {490 4 40 15} box THIN_UP_BOX labelsize 11
@@ -215,7 +215,7 @@
Fl_Button padeditbutton {
label edit
callback {//
- partui->showparameters(n,2);
+ partui->showparameters(n,PART::engine::padSynth);
if ((Fl::event_button() == 3))
synth->getGuiMaster()->partui->instrumentkitlist->hide();}
xywh {560 4 40 15} box THIN_UP_BOX labelsize 11
@@ -465,7 +465,7 @@
Fl_Button adeditbutton {
label Edit
callback {//
- showparameters(0,0);
+ showparameters(0,PART::engine::addSynth);
//checkEngines();
seteditname();
if ((Fl::event_button() == 3))
@@ -495,7 +495,7 @@
Fl_Button subeditbutton {
label Edit
callback {//
- showparameters(0,1);
+ showparameters(0,PART::engine::subSynth);
//checkEngines();
seteditname();
if ((Fl::event_button() == 3))
@@ -525,7 +525,7 @@
Fl_Button padeditbutton {
label Edit
callback {//
- showparameters(0,2);
+ showparameters(0,PART::engine::padSynth);
//checkEngines();
seteditname();
if ((Fl::event_button() == 3))
@@ -1752,9 +1752,9 @@
code {//
partfx->copy_label(synth->getGuiMaster()->setPartWindowTitle("Part Effects").c_str());
setEffNum();
- bool res = fetchData(0, EFFECT::control::changed, npart, (TOPLEVEL::insert::none | 128) + insefftype->value(), inseffnocounter->value() - 1);
+ bool res = fetchData(0, EFFECT::control::changed, npart, (EFFECT::type::none) + insefftype->value(), inseffnocounter->value() - 1);
inseffectui->UpdatePresetColour(res, insefftype->value());
- fxRtext();} {}
+ lastfxW = 0;} {}
}
Function {kitrefresh()} {} {
code {//
@@ -2283,7 +2283,6 @@
code {//
if (instrumenteditwindow->visible())
editRtext();
-
if (partfx->visible())
{
if (insefftype->value() == 8) // dynfilter
@@ -2294,14 +2293,8 @@
inseffectui->filtRtext();
}
}
- if ( partfx->w() != lastfxW)
- {
- fxRtext();
- lastfxW = partfx->w();
- }
+ fxRtext();
}
-
-
if (instrumentkitlist->visible() && instrumentkitlist->w() != lastkitW)
{
kitRtext();
@@ -2490,7 +2483,16 @@
}
Function {fxRtext()} {} {
code {//
- float dScale = partfx->w() / float(fxDW);
+ if (lastfxW < 3)
+ {
+ ++lastfxW;
+ return;
+ }
+ if (lastfxW == partfx->w())
+ return;
+ lastfxW = partfx->w();
+
+ float dScale = lastfxW / float(fxDW);
if (dScale < 0.2f)
dScale = 0.2f;
diff -Nru yoshimi-2.2.1/src/UI/SUBnoteUI.fl yoshimi-2.2.2.1/src/UI/SUBnoteUI.fl
--- yoshimi-2.2.1/src/UI/SUBnoteUI.fl 2022-07-25 18:20:19.000000000 +0000
+++ yoshimi-2.2.2.1/src/UI/SUBnoteUI.fl 2022-09-14 22:56:29.000000000 +0000
@@ -102,7 +102,7 @@
else
o->value(0);
- send_data(0, TOPLEVEL::insert::harmonicPhaseBandwidth, n, x, TOPLEVEL::type::Integer);}
+ send_data(0, TOPLEVEL::insert::harmonicBandwidth, n, x, TOPLEVEL::type::Integer);}
tooltip {Harmonic's bandwidth multiplier} xywh {0 166 15 128} type {Vert Knob} box FLAT_BOX minimum 63 maximum -64 step 1
code0 {o->setValueType(VC_SubBandwidthRel);}
code1 {o->useCustomTip(true);}
@@ -749,7 +749,7 @@
h[control]->mag->value((int) value);
return;
}
- if (insert == TOPLEVEL::insert::harmonicPhaseBandwidth)
+ if (insert == TOPLEVEL::insert::harmonicBandwidth)
{
h[control]->bw->value((int)value - 64);
return;