SevenDelay
Moderators: raboof, MattKingUSA, khz
- sysrqer
- Established Member
- Posts: 2527
- Joined: Thu Nov 14, 2013 11:47 pm
- Has thanked: 320 times
- Been thanked: 153 times
- Contact:
Re: SevenDelay
I've just built these and they seem to work well. The vst3 download wasn't recognised by reaper but the regular built vst are seen.
I love the delay, I've been wanting one like that for ages. It's a crazy one, some of the sounds you can get out of it mad!
Thank you!
I love the delay, I've been wanting one like that for ages. It's a crazy one, some of the sounds you can get out of it mad!
Thank you!
Re: SevenDelay
Hi, sysrqer.
Deleting `~/.config/REAPER/reaper-vstplugins64.ini` might help to recognize VST 3 plugins. `reaper-vstplugins64.ini` will be recreated when restarts reaper. Just in case, I don't recommend my VST 3 plugins on Linux for now because they won't display GUI.
Some tips for SevenDelay:
Max delay time is defined in `SevenDelay/parameter.hpp`. Currently it's on line 26.
When changing max delay time, it may be better to change tuning of `Time` knob. It's defined in `SevenDelay/parameter.cpp`, line 23.
Arguments are (timeMin, timeMax, guiAnchor, timeAnchor). It must be (0.0 < guiAnchor < 1.0) and (timeMin < timeAnchor < timeMax).
In GUI, value is normalized in range of [0.0, 1.0]. When gui value is `guiAnchor`, then value will be mapped to `timeAnchor`. In other words, tuning curve is determined by `guiAnchor` and `timeAnchor`.
Some example:
If you'd like to experiment with EightDelay, NineDelay and so on, it can be changed in `SevenDelay/dsp/dspcore.hpp`, line 29.
Deleting `~/.config/REAPER/reaper-vstplugins64.ini` might help to recognize VST 3 plugins. `reaper-vstplugins64.ini` will be recreated when restarts reaper. Just in case, I don't recommend my VST 3 plugins on Linux for now because they won't display GUI.
Some tips for SevenDelay:
Max delay time is defined in `SevenDelay/parameter.hpp`. Currently it's on line 26.
Code: Select all
constexpr double maxDelayTime = 8.0; // max 8 seconds.
Code: Select all
LogScale<double> Scales::time(0.0001, maxDelayTime, 0.5, 1.0);
In GUI, value is normalized in range of [0.0, 1.0]. When gui value is `guiAnchor`, then value will be mapped to `timeAnchor`. In other words, tuning curve is determined by `guiAnchor` and `timeAnchor`.
Some example:
Code: Select all
- (0.01, maxDelayTime, 0.5, maxDelayTime / 2.0) // Mostly linear.
- (0.01, maxDelayTime, 0.7, 0.5) // Tuning towards short delay.
- (0.01, maxDelayTime, 0.3, 2.0) // Tuning towards long delay.
Code: Select all
// Change 7 to some integer value greater than 0.
using DelayTypeName = DelayLagrange<float, 7>;
Re: SevenDelay
I added another plugin EsPhaser to my repository.
https://github.com/ryukau/LV2Plugins
EsPhaser is an experimental phaser which is equipped with 4096 all-pass filters. At this large number of all-passes, it sounds more like a blurred delay rather than a phaser. Also note that it's very CPU intensive.
I've also fixed VST 3 plugins to display GUI on Linux. It works without problem on REAPER. On Bitwig, GUI blackouts sometimes.
https://github.com/ryukau/VSTPlugins/issues/3
https://github.com/ryukau/LV2Plugins
EsPhaser is an experimental phaser which is equipped with 4096 all-pass filters. At this large number of all-passes, it sounds more like a blurred delay rather than a phaser. Also note that it's very CPU intensive.
I've also fixed VST 3 plugins to display GUI on Linux. It works without problem on REAPER. On Bitwig, GUI blackouts sometimes.
https://github.com/ryukau/VSTPlugins/issues/3
Re: SevenDelay
Thanks, finally running on Reaper, I'm very happy for that, good job, and keep going with your projects, I'm ready to share with more friends
- sysrqer
- Established Member
- Posts: 2527
- Joined: Thu Nov 14, 2013 11:47 pm
- Has thanked: 320 times
- Been thanked: 153 times
- Contact:
Re: SevenDelay
Hey, sorry, I've had this tab open at work for ages and meant to respond but didn't get around to it. Thanks so much for the tips, I will definitely have a play around and see what I can come up with!ryukau wrote:Hi, sysrqer.
Deleting `~/.config/REAPER/reaper-vstplugins64.ini` might help to recognize VST 3 plugins. `reaper-vstplugins64.ini` will be recreated when restarts reaper. Just in case, I don't recommend my VST 3 plugins on Linux for now because they won't display GUI.
Some tips for SevenDelay:
Max delay time is defined in `SevenDelay/parameter.hpp`. Currently it's on line 26.
When changing max delay time, it may be better to change tuning of `Time` knob. It's defined in `SevenDelay/parameter.cpp`, line 23.Code: Select all
constexpr double maxDelayTime = 8.0; // max 8 seconds.
Arguments are (timeMin, timeMax, guiAnchor, timeAnchor). It must be (0.0 < guiAnchor < 1.0) and (timeMin < timeAnchor < timeMax).Code: Select all
LogScale<double> Scales::time(0.0001, maxDelayTime, 0.5, 1.0);
In GUI, value is normalized in range of [0.0, 1.0]. When gui value is `guiAnchor`, then value will be mapped to `timeAnchor`. In other words, tuning curve is determined by `guiAnchor` and `timeAnchor`.
Some example:
If you'd like to experiment with EightDelay, NineDelay and so on, it can be changed in `SevenDelay/dsp/dspcore.hpp`, line 29.Code: Select all
- (0.01, maxDelayTime, 0.5, maxDelayTime / 2.0) // Mostly linear. - (0.01, maxDelayTime, 0.7, 0.5) // Tuning towards short delay. - (0.01, maxDelayTime, 0.3, 2.0) // Tuning towards long delay.
Code: Select all
// Change 7 to some integer value greater than 0. using DelayTypeName = DelayLagrange<float, 7>;
Re: SevenDelay
A new plugin CubicPadSynth is added to my repository.
LV2: https://github.com/ryukau/LV2Plugins
VST 3: https://github.com/ryukau/VSTPlugins
Manual: https://ryukau.github.io/VSTPlugins/man ... th_en.html
Edit: To build LV2 repository, a patch to DPF is required for now. See building section on README.md.
CubicPadSynth is a wavetable synthesizer using PADsynth algorithm. Difference to ZynAddSubFX or Yoshimi is mostly user interface. CubicPadSynth has more direct control for each profile parameters (gain, width, pitch and phase randomization). I think it's better for sound effect but not good for tonal sound.
This synth is heavy. Perhaps it uses too much memory for wavetable. To reduce DSP load, following change can be applied to source code. Beware that it changes character of output.
In `CubicPadSynth/parameter.hpp`, line 39:
In `CubicPadSynth/dsp/dspcore.cpp`, line 290:
Sometimes generated wavetable contains pop noise. To avoid this, try setting profile phases for higher overtone to almost maximum. Profile phase control is the one with blue bars on Wavetable tab.
LV2: https://github.com/ryukau/LV2Plugins
VST 3: https://github.com/ryukau/VSTPlugins
Manual: https://ryukau.github.io/VSTPlugins/man ... th_en.html
Edit: To build LV2 repository, a patch to DPF is required for now. See building section on README.md.
CubicPadSynth is a wavetable synthesizer using PADsynth algorithm. Difference to ZynAddSubFX or Yoshimi is mostly user interface. CubicPadSynth has more direct control for each profile parameters (gain, width, pitch and phase randomization). I think it's better for sound effect but not good for tonal sound.
This synth is heavy. Perhaps it uses too much memory for wavetable. To reduce DSP load, following change can be applied to source code. Beware that it changes character of output.
In `CubicPadSynth/parameter.hpp`, line 39:
Code: Select all
// Reduce this number to shorten wavetable size.
constexpr int32_t tableSize = 262144;
Code: Select all
// Use bilinear interpolation instead of bicubic interpolation.
// Vec16f sig = osc.processCubic(lowpassPitch + pitch, wavetable.table);
Vec16f sig = osc.process(lowpassPitch + pitch, wavetable.table);
Re: SevenDelay
A new synthesizer LightPadSynth is added to my repository.
LV2 Repository: https://github.com/ryukau/LV2Plugins
Manual and VST 3: https://ryukau.github.io/VSTPlugins/man ... th_en.html
LightPadSynth is a lightweight version of CubicPadSynth. Pitch modulation is omitted for efficiency. A feedback delay (or a comb filter) is added for each voice instead.
This synth is better than CubicPadSynth to make human-voice-ish sounds because of the delay.
LV2 Repository: https://github.com/ryukau/LV2Plugins
Manual and VST 3: https://ryukau.github.io/VSTPlugins/man ... th_en.html
LightPadSynth is a lightweight version of CubicPadSynth. Pitch modulation is omitted for efficiency. A feedback delay (or a comb filter) is added for each voice instead.
This synth is better than CubicPadSynth to make human-voice-ish sounds because of the delay.
Re: SevenDelay
A new plugin LatticeReverb is added to my repository.
LV2 Repository: https://github.com/ryukau/LV2Plugins
Manual and VST 3: https://ryukau.github.io/VSTPlugins/man ... rb_en.html
LatticeReverb uses lattice structure to nest all-pass filters. All-pass filter in this case is basically a delay with a feedback and a feedforward path.
LatticeReverb is exposing all internal parameters but doesn't have any clever algorithm to set delay time and feed amount. So sometimes it sounds artificial, which is like just a bunch of short delays. LFO in Modulation tab may help in this case.
LV2 Repository: https://github.com/ryukau/LV2Plugins
Manual and VST 3: https://ryukau.github.io/VSTPlugins/man ... rb_en.html
LatticeReverb uses lattice structure to nest all-pass filters. All-pass filter in this case is basically a delay with a feedback and a feedforward path.
LatticeReverb is exposing all internal parameters but doesn't have any clever algorithm to set delay time and feed amount. So sometimes it sounds artificial, which is like just a bunch of short delays. LFO in Modulation tab may help in this case.
- Shupacabras
- Established Member
- Posts: 116
- Joined: Fri Jun 08, 2012 11:12 pm
Re: SevenDelay
Hi, I have an error when compiling.
Code: Select all
../../Makefile.plugins.mk:131: recipe for target '../../build/CV_ExpLoopEnvelope/ui.cpp.o' failed
make[2]: *** [../../build/CV_ExpLoopEnvelope/ui.cpp.o] Error 1
make[2]: se sale del directorio '/home/cristian/LV2Plugins/lv2cvport/CV_ExpLoopEnvelope'
Makefile:55: recipe for target 'CV_ExpLoopEnvelope' failed
make[1]: *** [CV_ExpLoopEnvelope] Error 2
make[1]: se sale del directorio '/home/cristian/LV2Plugins/lv2cvport'
Makefile:42: recipe for target 'lv2cvport' failed
make: *** [lv2cvport] Error 2
Re: SevenDelay
Hi, Shupacabras. Thanks for the report.
I found that `lv2cvport/Makefile` was using spaces for indentation instead of tabs. It's now fixed.
If the build is still failing, I'd like to read the full build log.
If CV_ExpLoopEnvelope is the only one failing to build, you can change `lv2cvport/Makefile` as following to bypass the build.
I found that `lv2cvport/Makefile` was using spaces for indentation instead of tabs. It's now fixed.
If the build is still failing, I'd like to read the full build log.
If CV_ExpLoopEnvelope is the only one failing to build, you can change `lv2cvport/Makefile` as following to bypass the build.
Code: Select all
build: \
CV_3PoleLP \
CV_AudioToCv \
CV_CvToAudio \
CV_DelayLP3 \
CV_DoubleFilter \
CV_ExpADSREnvelope \
CV_ExpPolyADEnvelope \
CV_Gate16 \
CV_HoldFilter \
CV_Invert \
CV_LinearADSREnvelope \
CV_LinearMap \
CV_LongAllpass \
CV_Multiply \
CV_NaiveDelay \
CV_NestedLongAllpass \
CV_ParabolicADEnvelope \
CV_PController \
CV_PolyLoopEnvelope \
CV_PTRSaw \
CV_PTRTrapezoid \
CV_RampFilter \
CV_RateLimiter \
CV_Sin \
CV_StereoGain \
# CV_ExpLoopEnvelope \ # Disable to build.
- Shupacabras
- Established Member
- Posts: 116
- Joined: Fri Jun 08, 2012 11:12 pm
Re: SevenDelay
I still have errors
In detail what were my strict steps
SO KDE Neon 18.04 + repos KXStudio
after the first error I tried in `lv2cvport/Makefile`
now i get a new error
In detail what were my strict steps
SO KDE Neon 18.04 + repos KXStudio
Code: Select all
sudo apt install git pkg-config libjack-jackd2-dev libgl1-mesa-dev liblo-dev python-rdflib
git clone --recursive https://github.com/ryukau/LV2Plugins.git
cd LV2Plugins
cp patch/NanoVG.cpp lib/DPF/dgl/src/NanoVG.cpp
make
Code: Select all
build: \
# CV_3PoleLP \
# CV_AudioToCv \
# CV_CvToAudio \
# CV_DelayLP3 \
# CV_DoubleFilter \
# CV_ExpADSREnvelope \
# CV_ExpPolyADEnvelope \
# CV_Gate16 \
# CV_HoldFilter \
# CV_Invert \
# CV_LinearADSREnvelope \
# CV_LinearMap \
# CV_LongAllpass \
# CV_Multiply \
# CV_NaiveDelay \
# CV_NestedLongAllpass \
# CV_ParabolicADEnvelope \
# CV_PController \
# CV_PolyLoopEnvelope \
# CV_PTRSaw \
# CV_PTRTrapezoid \
# CV_RampFilter \
# CV_RateLimiter \
# CV_Sin \
# CV_StereoGain \
# CV_ExpLoopEnvelope \
Code: Select all
Compiling parameter.cpp
Compiling ui.cpp
ui.cpp:412:8: error: ‘unordered_map’ in namespace ‘std’ does not name a template type
std::unordered_map<int, std::shared_ptr<ValueWidget>> valueWidget;
^~~~~~~~~~~~~
ui.cpp:413:8: error: ‘unordered_map’ in namespace ‘std’ does not name a template type
std::unordered_map<int, std::shared_ptr<ArrayWidget>> arrayWidget;
^~~~~~~~~~~~~
ui.cpp: In member function ‘virtual void DISTRHO::EnvelopedSineUI::updateUI(uint32_t, float)’:
ui.cpp:346:20: error: ‘valueWidget’ was not declared in this scope
auto vWidget = valueWidget.find(id);
^~~~~~~~~~~
ui.cpp:346:20: note: suggested alternative: ‘ValueWidget’
auto vWidget = valueWidget.find(id);
^~~~~~~~~~~
ValueWidget
ui.cpp:353:20: error: ‘arrayWidget’ was not declared in this scope
auto aWidget = arrayWidget.find(id);
^~~~~~~~~~~
ui.cpp:353:20: note: suggested alternative: ‘ArrayWidget’
auto aWidget = arrayWidget.find(id);
^~~~~~~~~~~
ArrayWidget
ui.cpp: In member function ‘virtual void DISTRHO::EnvelopedSineUI::programLoaded(uint32_t)’:
ui.cpp:374:24: error: ‘valueWidget’ was not declared in this scope
for (auto &vPair : valueWidget) {
^~~~~~~~~~~
ui.cpp:374:24: note: suggested alternative: ‘ValueWidget’
for (auto &vPair : valueWidget) {
^~~~~~~~~~~
ValueWidget
ui.cpp:379:24: error: ‘arrayWidget’ was not declared in this scope
for (auto &aPair : arrayWidget) {
^~~~~~~~~~~
ui.cpp:379:24: note: suggested alternative: ‘ArrayWidget’
for (auto &aPair : arrayWidget) {
^~~~~~~~~~~
ArrayWidget
ui.cpp: In member function ‘std::shared_ptr<BarBox<Scale> > DISTRHO::EnvelopedSineUI::addBarBox(float, float, float, float, uint32_t, size_t, Scale&)’:
ui.cpp:449:7: error: ‘arrayWidget’ was not declared in this scope
arrayWidget.emplace(std::make_pair(id0 + i, barBox));
^~~~~~~~~~~
ui.cpp:449:7: note: suggested alternative: ‘ArrayWidget’
arrayWidget.emplace(std::make_pair(id0 + i, barBox));
^~~~~~~~~~~
ArrayWidget
ui.cpp: In member function ‘void DISTRHO::EnvelopedSineUI::addButton(float, float, float, const char*, uint32_t)’:
ui.cpp:462:5: error: ‘valueWidget’ was not declared in this scope
valueWidget.emplace(std::make_pair(id, button));
^~~~~~~~~~~
ui.cpp:462:5: note: suggested alternative: ‘ValueWidget’
valueWidget.emplace(std::make_pair(id, button));
^~~~~~~~~~~
ValueWidget
ui.cpp: In member function ‘void DISTRHO::EnvelopedSineUI::addCheckbox(float, float, float, const char*, uint32_t)’:
ui.cpp:474:5: error: ‘valueWidget’ was not declared in this scope
valueWidget.emplace(std::make_pair(id, checkbox));
^~~~~~~~~~~
ui.cpp:474:5: note: suggested alternative: ‘ValueWidget’
valueWidget.emplace(std::make_pair(id, checkbox));
^~~~~~~~~~~
ValueWidget
ui.cpp: In member function ‘void DISTRHO::EnvelopedSineUI::addKnob(float, float, float, DGL::Color, const char*, uint32_t, DISTRHO::EnvelopedSineUI::LabelPosition)’:
ui.cpp:540:5: error: ‘valueWidget’ was not declared in this scope
valueWidget.emplace(std::make_pair(id, knob));
^~~~~~~~~~~
ui.cpp:540:5: note: suggested alternative: ‘ValueWidget’
valueWidget.emplace(std::make_pair(id, knob));
^~~~~~~~~~~
ValueWidget
ui.cpp: In member function ‘void DISTRHO::EnvelopedSineUI::addNumberKnob(float, float, float, DGL::Color, const char*, uint32_t, Scale&, DISTRHO::EnvelopedSineUI::LabelPosition)’:
ui.cpp:566:5: error: ‘valueWidget’ was not declared in this scope
valueWidget.emplace(std::make_pair(id, knob));
^~~~~~~~~~~
ui.cpp:566:5: note: suggested alternative: ‘ValueWidget’
valueWidget.emplace(std::make_pair(id, knob));
^~~~~~~~~~~
ValueWidget
ui.cpp: In member function ‘void DISTRHO::EnvelopedSineUI::addRotaryKnob(float, float, float, DGL::Color, const char*, uint32_t, DISTRHO::EnvelopedSineUI::LabelPosition)’:
ui.cpp:590:5: error: ‘valueWidget’ was not declared in this scope
valueWidget.emplace(std::make_pair(id, knob));
^~~~~~~~~~~
ui.cpp:590:5: note: suggested alternative: ‘ValueWidget’
valueWidget.emplace(std::make_pair(id, knob));
^~~~~~~~~~~
ValueWidget
ui.cpp: In member function ‘void DISTRHO::EnvelopedSineUI::addTextKnob(float, float, float, DGL::Color, uint32_t, Scale&, bool, uint32_t, int32_t)’:
ui.cpp:651:5: error: ‘valueWidget’ was not declared in this scope
valueWidget.emplace(std::make_pair(id, knob));
^~~~~~~~~~~
ui.cpp:651:5: note: suggested alternative: ‘ValueWidget’
valueWidget.emplace(std::make_pair(id, knob));
^~~~~~~~~~~
ValueWidget
ui.cpp: In member function ‘void DISTRHO::EnvelopedSineUI::addOptionMenu(float, float, float, uint32_t, const std::vector<std::__cxx11::basic_string<char> >&)’:
ui.cpp:669:5: error: ‘valueWidget’ was not declared in this scope
valueWidget.emplace(std::make_pair(id, menu));
^~~~~~~~~~~
ui.cpp:669:5: note: suggested alternative: ‘ValueWidget’
valueWidget.emplace(std::make_pair(id, menu));
^~~~~~~~~~~
ValueWidget
ui.cpp: In member function ‘void DISTRHO::EnvelopedSineUI::addVSlider(float, float, DGL::Color, const char*, uint32_t)’:
ui.cpp:715:5: error: ‘valueWidget’ was not declared in this scope
valueWidget.emplace(std::make_pair(id, slider));
^~~~~~~~~~~
ui.cpp:715:5: note: suggested alternative: ‘ValueWidget’
valueWidget.emplace(std::make_pair(id, slider));
^~~~~~~~~~~
ValueWidget
../Makefile.plugins.mk:131: recipe for target '../build/EnvelopedSine/ui.cpp.o' failed
make[1]: *** [../build/EnvelopedSine/ui.cpp.o] Error 1
make[1]: se sale del directorio '/home/cristian/LV2Plugins/EnvelopedSine'
Makefile:50: recipe for target 'EnvelopedSine' failed
make: *** [EnvelopedSine] Error 2
/code]
I did not find any log file or error.log in the LV2Plugins folder
Do I need to install or compile something beforehand?
Sorry my bad english
- SpotlightKid
- Established Member
- Posts: 260
- Joined: Sun Jul 02, 2017 1:24 pm
- Has thanked: 57 times
- Been thanked: 61 times
- Shupacabras
- Established Member
- Posts: 116
- Joined: Fri Jun 08, 2012 11:12 pm
Re: SevenDelay
Code: Select all
#include <unordered_map>
Code: Select all
#include <unordered_map>
Code: Select all
#include <unordered_map>
solved the problem
Thank you