mtytel / vital Goto Github PK
View Code? Open in Web Editor NEWSpectral warping wavetable synth
License: GNU General Public License v3.0
Spectral warping wavetable synth
License: GNU General Public License v3.0
Hello,
as the title says:
Thus my question, as this smells a bit like a driver issue which is not directly addressable: is it possible in some way to have a way to make Vital's UI driven in the main thread instead to avoid that case ?
While trying to use the --render
command of the Vital CLI on macOS, I got a segfault.
⇒ cd ~/Desktop
⇒ /Applications/Vital.app/Contents/MacOS/Vital --render "/Users/devalias/Music/Vital/Factory/Presets/Plucked String.vital" --midi 48 --length
3 --bpm 120 --images
Thread 0 Crashed:: JUCE Message Thread Dispatch queue: com.apple.main-thread
0 Vital 0x105b4a238 juce::AudioFormatWriter::writeFromFloatArrays(float const* const*, int, int) + 40
1 Vital 0x105efb2ac SynthBase::renderAudioToFile(juce::File const&, float, float, std::__1::vector<int, std::__1::allocator<int>>, bool) + 3132
2 Vital 0x105ce39be processCommandLine(juce::String const&) + 6334
3 Vital 0x105e59ffa StandaloneSynth::initialise(juce::String const&) + 570
4 Vital 0x105b8c7e2 juce::JUCEApplicationBase::initialiseApp() + 1042
5 Vital 0x105cbed5b juce::JUCEApplication::initialiseApp() + 11
6 Vital 0x105b4a578 main + 216
7 dyld 0x7ff806ac241f start + 1903
ChatGPT's advice based on the crash report:
The crash report indicates that the application Vital crashed due to a segmentation fault (SIGSEGV), which is a type of crash where a program attempts to access a restricted area of memory.
Here are the key points from the crash report:
- **Process**: Vital (audio.vital.synth)
- **Version**: 1.5.5
- **Crashed Thread**: 0 JUCE Message Thread (main thread)
- **Exception Type**: EXC_BAD_ACCESS (SIGSEGV)
- **Exception Codes**: KERN_INVALID_ADDRESS at 0x0000000000000018
The crash occurred in thread 0, which is the main thread of the application. The function call stack indicates that the crash happened during a call to `juce::AudioFormatWriter::writeFromFloatArrays`, which is a function from the JUCE framework used to write audio data. It appears that the application attempted to access memory at address `0x18`, which was not a valid address, leading to the segmentation fault.
..snip..
Hello I noticed when you import as wavetable any sound to first oscillator with your all FXs LFO modulations, the others oscillators (OSC 2,3) use the same FXs Slots. We need improvement of Vital by separating all FXs slots individually per one OSC. I mean these 3 OSCs should have own FXs. It would be game changer!
The most recent build of Vital completely ignores Live 11 pitch bend and mod wheel controls; it seems like even if "MPE Enabled" is turned off, Vital still behaves like it's in MPE enabled mode? I know Live 11 has a very strange way of dealing with MPE, since it handles instruments on a MIDI track differently than it handles midi routed from another track. Here are the signals I've recorded it ignoring so far, using midi monitor on a second instrument on an instrument rack:
E0 XX XX
B0 XX XX
After a note down signal like 80 XX XX
is sent.
It seems like the pitch and mod wheel work fine in Bitwig.
Details:
Vital 1.5.5
Ableton Live Suite 11.3.21
Windows 11 Pro 22H2
I would love to see this compiled to WASM for a WAM for use in web-daws. Has this been done yet? If not, is there's any interest in seeing this happen?
To replicate, use a factory wavetable set to waveform blend such as "Classic Fade". Set the blend to "None" and you can't move discretely through the wavetable frames (like in "Basic Shapes"). Also, "Harmonic Series" is set to "None" but you can't snap to different keyframes.
I thought i'd just pen down some pain points with building helm.
Juce and the jucelibrarycode comes with the github download. There's special LV2 code as well in the builds directory. Do not delete and regenerate using Projucer, since juce doesn't support LV2. The other problem is the gcc version for distros are g++-9/10, which will not compile the juce library code because of tighter restrictions on packed unions. So to build helm, the command line needs to be "make CXX=g++-8 LDFLAGS=-lm". The other way is to pick apart an rpm source file or pkg file to figure out how the commands used to build from source.
When running the standalone Linux binary without JACK running, I see this in the console output:
standalone/builds/linux on main took 4m7s
❯ build/vial
JUCE v6.0.5
Cannot read socket fd = 13 err = Success
CheckRes error
JackSocketClientChannel read fail
Cannot open JuceJackDummy client
JackShmReadWritePtr1::~JackShmReadWritePtr1 - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
Unable to connect to JACK server
But running it when JACK is running does not create any ports.
Using jack-audio-connection-kit-1.9.14-5.fc33.x86_64
Loading the LV2 plugin with either Ardour or Zrythm freezes the host. Carla does not detect the plugin.
Video here:
https://youtu.be/HpSC2SFb9E4?t=110
Instead of the .exe Windows installer, is there a distribution as a single .dll file (or folder) + folder for presets?
It would be easier in my setup to use no installer, but just a portable .dll VST2 file + folder preset.
BTW, where are the presets stored? After .exe installer installation, I don't find any folder containing preset files. Is it in the Win registry?
Thanks!
Is it permissible to distribute LV2 versions of the Factory Content patches availble with the free version of Vital? Users may wish to run the LV2 plugin headless and hence be unable to access the .vital patches. (This is my use case.) We have vitalium running on Zynthian and it would be cool to be able to distribute the presets too for good out-of-box-experience for users.
I ran sudo apt-get build-dep .
to install build dependencies.
Then I ran make
:
make[1]: Entering directory '/home/pi/vital'
make -C standalone/builds/linux CONFIG=Release SIMDFLAGS="-march=armv8-a -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard" GLFLAGS="-DOPENGL_ES=1" BUILD_DATE="2021 02 25 12 40"
make[2]: Entering directory '/home/pi/vital/standalone/builds/linux'
Compiling common.cpp
In file included from ../../../src/synthesis/framework/common.h:41,
from ../../../src/interface/editor_components/open_gl_component.h:19,
from ../../../src/interface/editor_components/open_gl_image_component.h:19,
from ../../../src/interface/editor_components/synth_button.h:21,
from ../../../src/interface/editor_sections/authentication_section.h:24,
from ../../../src/interface/editor_sections/full_interface.h:22,
from ../../../src/common/border_bounds_constrainer.cpp:18,
from ../../../src/unity_build/common.cpp:18:
../../../src/synthesis/framework/poly_values.h: In static member function ‘static vital::poly_float::simd_type vital::poly_float::div(vital::poly_float::simd_type, vital::poly_float::simd_type)’:
../../../src/synthesis/framework/poly_values.h:592:14: error: ‘vdivq_f32’ was not declared in this scope
return vdivq_f32(one, two);
^~~~~~~~~
../../../src/synthesis/framework/poly_values.h:592:14: note: suggested alternative: ‘vzipq_f32’
return vdivq_f32(one, two);
^~~~~~~~~
vzipq_f32
In file included from ../../../src/unity_build/common.cpp:25:
../../../src/common/synth_gui_interface.cpp: In member function ‘void SynthGuiInterface::setGuiSize(float)’:
../../../src/common/synth_gui_interface.cpp:199:103: warning: ‘const juce::Displays::Display& juce::Displays::findDisplayForPoint(juce::Point<int>, bool) const’ is deprecated [-Wdeprecated-declarations]
const Displays::Display& display = Desktop::getInstance().getDisplays().findDisplayForPoint(position);
^
In file included from ../../../third_party/JUCE/modules/juce_core/system/juce_StandardHeader.h:69,
from ../../../third_party/JUCE/modules/juce_core/juce_core.h:203,
from ../../../third_party/JUCE/modules/juce_audio_basics/juce_audio_basics.h:53,
from ../../JuceLibraryCode/JuceHeader.h:17,
from ../../../src/common/border_bounds_constrainer.h:19,
from ../../../src/common/border_bounds_constrainer.cpp:17,
from ../../../src/unity_build/common.cpp:18:
../../../third_party/JUCE/modules/juce_gui_basics/desktop/juce_Displays.h:139:37: note: declared here
JUCE_DEPRECATED (const Display& findDisplayForPoint (Point<int>, bool isPhysical = false) const noexcept);
^~~~~~~~~~~~~~~~~~~
../../../third_party/JUCE/modules/juce_core/system/juce_PlatformDefs.h:294:57: note: in definition of macro ‘JUCE_DEPRECATED’
#define JUCE_DEPRECATED(functionDef) functionDef JUCE_DEPRECATED_ATTRIBUTE
^~~~~~~~~~~
make[2]: *** [Makefile:110: build/intermediate/Release/common_24cbed85.o] Error 1
make[2]: Leaving directory '/home/pi/vital/standalone/builds/linux'
make[1]: *** [Makefile:88: standalone] Error 2
make[1]: Leaving directory '/home/pi/vital'
standalone/builds/linux on main took 2s
❯ gdb build/vial
GNU gdb (GDB) Fedora 10.1-2.fc33
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from build/vial...
(gdb) r
Starting program: /home/be/sw/vital/standalone/builds/linux/build/vial
Missing separate debuginfos, use: dnf debuginfo-install glibc-2.32-3.fc33.x86_64
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
JUCE v6.0.5
[New Thread 0x7ffff3ba4640 (LWP 72454)]
[New Thread 0x7ffff3316640 (LWP 72459)]
[Thread 0x7ffff3316640 (LWP 72459) exited]
Thread 2 "vial" received signal SIG32, Real-time event 32.
[Switching to Thread 0x7ffff3ba4640 (LWP 72454)]
0x00007ffff76f2c4e in epoll_wait () from /lib64/libc.so.6
Missing separate debuginfos, use: dnf debuginfo-install alsa-lib-1.2.4-5.fc33.x86_64 bzip2-libs-1.0.8-4.fc33.x86_64 cyrus-sasl-lib-2.1.27-6.fc33.x86_64 dbus-libs-1.12.20-2.fc33.x86_64 fftw-devel-3.3.8-9.fc33.x86_64 freetype-2.10.4-1.fc33.x86_64 glib2-2.66.4-1.fc33.x86_64 keyutils-libs-1.6.1-1.fc33.x86_64 krb5-libs-1.18.2-29.fc33.x86_64 libX11-1.6.12-3.fc33.x86_64 libXau-1.0.9-4.fc33.x86_64 libXcursor-1.2.0-3.fc33.x86_64 libXext-1.3.4-4.fc33.x86_64 libXfixes-5.0.3-12.fc33.x86_64 libXinerama-1.1.4-6.fc33.x86_64 libXrender-0.9.10-12.fc33.x86_64 libblkid-2.36.1-1.fc33.x86_64 libbrotli-1.0.9-3.fc33.x86_64 libcom_err-1.45.6-4.fc33.x86_64 libcurl-7.71.1-8.fc33.x86_64 libffi-3.1-26.fc33.x86_64 libgcc-10.2.1-9.fc33.x86_64 libgcrypt-1.8.7-1.fc33.x86_64 libglvnd-1.3.2-2.fc33.x86_64 libglvnd-glx-1.3.2-2.fc33.x86_64 libgpg-error-1.41-1.fc33.x86_64 libmount-2.36.1-1.fc33.x86_64 libnghttp2-1.41.0-3.fc33.x86_64 libpng-1.6.37-6.fc33.x86_64 libpsl-0.21.1-2.fc33.x86_64 libsecret-0.20.4-1.fc33.x86_64 libselinux-3.1-2.fc33.x86_64 libssh-0.9.5-1.fc33.x86_64 libstdc++-10.2.1-9.fc33.x86_64 libunistring-0.9.10-9.fc33.x86_64 libxcb-1.13.1-5.fc33.x86_64 libzstd-1.4.7-1.fc33.x86_64 openldap-2.4.50-5.fc33.x86_64 openssl-libs-1.1.1i-1.fc33.x86_64 pcre-8.44-2.fc33.x86_64 pcre2-10.36-1.fc33.x86_64 sssd-client-2.4.0-4.fc33.x86_64 systemd-libs-246.7-2.fc33.x86_64 xz-libs-5.2.5-4.fc33.x86_64
(gdb) thread apply all bt
Thread 2 (Thread 0x7ffff3ba4640 (LWP 72454) "vial"):
#0 0x00007ffff76f2c4e in epoll_wait () at /lib64/libc.so.6
#1 0x00007ffff622d942 in impl_pollfd_wait (object=<optimized out>, pfd=<optimized out>, ev=0x7ffff3ba3a50, n_ev=<optimized out>, timeout=<optimized out>) at ../spa/plugins/support/system.c:154
#2 0x00007ffff62229bc in loop_iterate (object=0x3d7b8f8, timeout=-1) at ../spa/plugins/support/loop.c:291
#3 0x00007ffff6269bd0 in do_loop (user_data=0x1a51c60) at ../src/pipewire/data-loop.c:79
#4 0x00007ffff7d193f9 in start_thread () at /lib64/libpthread.so.0
#5 0x00007ffff76f2903 in clone () at /lib64/libc.so.6
Thread 1 (Thread 0x7ffff6591880 (LWP 72437) "vial"):
#0 0x00007ffff7d1a9d7 in __pthread_clockjoin_ex () at /lib64/libpthread.so.0
#1 0x00007ffff626a133 in pw_data_loop_stop (loop=loop@entry=0x1a51c60) at ../src/pipewire/data-loop.c:242
#2 0x00007ffff626a360 in pw_data_loop_destroy (loop=0x1a51c60) at ../src/pipewire/data-loop.c:170
#3 0x00007ffff6264bf5 in pw_context_destroy (context=0x3d91d20) at ../src/pipewire/context.c:418
#4 0x00007ffff62ff10a in jack_client_close (client=0x3d77220) at ../pipewire-jack/src/pipewire-jack.c:2669
#5 0x0000000000cc0d3a in juce::jack_client_close(_jack_client*) (client=0x3d77220) at ../../../third_party/JUCE/modules/juce_audio_devices/native/juce_linux_JackAudio.cpp:57
#6 0x0000000000cd123f in juce::JackAudioIODeviceType::scanForDevices() (this=0x3d26fb0) at ../../../third_party/JUCE/modules/juce_audio_devices/native/juce_linux_JackAudio.cpp:615
#7 0x0000000000cc5758 in juce::AudioDeviceManager::scanDevicesIfNeeded() (this=0x188e778) at ../../../third_party/JUCE/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp:439
#8 0x0000000000cc4502 in juce::AudioDeviceManager::initialise(int, int, juce::XmlElement const*, bool, juce::String const&, juce::AudioDeviceManager::AudioDeviceSetup const*) (this=0x188e778, numInputChannelsNeeded=0, numOutputChannelsNeeded=2, xml=0x0, selectDefaultDeviceOnFailure=true, preferredDefaultDeviceName=..., preferredSetupOptions=0x0) at ../../../third_party/JUCE/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp:241
#9 0x0000000000dcbea4 in juce::AudioAppComponent::setAudioChannels(int, int, juce::XmlElement const*) (this=0x188e6b0, numInputChannels=0, numOutputChannels=2, xml=0x0) at ../../../third_party/JUCE/modules/juce_audio_utils/gui/juce_AudioAppComponent.cpp:70
#10 0x000000000078db26 in SynthEditor::SynthEditor(bool) (this=0x188e6b0, use_gui=true) at ../../../src/standalone/synth_editor.cpp:35
#11 0x0000000000790b68 in SynthApplication::MainWindow::MainWindow(juce::String const&, bool) (this=0x1851700, name=..., visible=true) at ../../../src/standalone/main.cpp:110
#12 0x0000000000795a56 in std::make_unique<SynthApplication::MainWindow, juce::String const, bool&>(juce::String const&&, bool&) () at /usr/include/c++/10/bits/unique_ptr.h:962
#13 0x00000000007943f0 in SynthApplication::initialise(juce::String const&) (this=0x18512e0, command_line=...) at ../../../src/standalone/main.cpp:498
#14 0x0000000000eebd0e in juce::JUCEApplicationBase::initialiseApp() (this=0x18512e0) at ../../../third_party/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:297
#15 0x0000000001070286 in juce::JUCEApplication::initialiseApp() (this=0x18512e0) at ../../../third_party/JUCE/modules/juce_gui_basics/application/juce_Application.cpp:92
#16 0x0000000000eebbc9 in juce::JUCEApplicationBase::main() () at ../../../third_party/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:256
#17 0x0000000000eebb0a in juce::JUCEApplicationBase::main(int, char const**) (argc=1, argv=0x7fffffffdb28) at ../../../third_party/JUCE/modules/juce_events/messages/juce_ApplicationBase.cpp:240
#18 0x000000000078d2ca in main(int, char**) (argc=1, argv=0x7fffffffdb28) at ../../../src/standalone/main.cpp:539
Hi,
I built this on a Pi for Linux arm64 and I get the message "Vial requires SSE2, NEON or AVX2 compatible processor. Exiting" When i try to run the standalone.
I am trying this on a Pi4 so it should support NEON.
Anyone had any luck with this?
For presets and waveforms it's not much of an issue as presets can be imported via banks and waveforms via folders but lfo shapes can only be imported one by one. Please add an "Add Folder" option for the lfos.
the error is
make -C standalone/builds/linux CONFIG=Release SIMDFLAGS="-msse2" GLFLAGS="" BUILD_DATE="2022 06 28 10 27"
make[1]: Entering directory '/home/moth/vital/standalone/builds/linux'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/moth/vital/standalone/builds/linux'
make -C plugin/builds/linux_vst VST CONFIG=Release AR=gcc-ar SIMDFLAGS="-msse2" GLFLAGS="" BUILD_DATE="2022 06 28 10 27"
make[1]: Entering directory '/home/moth/vital/plugin/builds/linux_vst'
Compiling include_juce_audio_plugin_client_VST2.cpp
In file included from ../../../third_party/JUCE/modules/juce_audio_plugin_client/juce_audio_plugin_client_VST2.cpp:26,
from ../../JuceLibraryCode/include_juce_audio_plugin_client_VST2.cpp:9:
../../../third_party/JUCE/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp:87:10: fatal error: pluginterfaces/vst2.x/aeffect.h: No such file or directory
87 | #include "pluginterfaces/vst2.x/aeffect.h"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [Makefile:201: build/intermediate/Release/include_juce_audio_plugin_client_VST2_dd551e08.o] Error 1
make[1]: Leaving directory '/home/moth/vital/plugin/builds/linux_vst'
make: *** [Makefile:97: vst] Error 2
I see only VST3 SDK...Can you please provide me pointer for VST2
Hi, I like to use custom SCL scala tuning files with vital. If I make a patch that relies on key-tracking, such as key-tracking a filter for white noise to do some physical modelling type thing, it will work beautifully at first. The filter frequency will respect my custom tuning.
But, if I save the ardour project, close it, and return to it again, it's a different story. The filter will behave entirely unlike it did — often a nasty noisy mess — until I reinitialize the patch. I needn't even reset the tuning or reimport my SCL file or anything, but I do need to reinitialize the patch. Weird, right? I wonder if you can reproduce this.
If I save the patch as a vital-internal preset, then when I open ardour and vital is misbehaving, I can reload the vital-internal preset and everything will be in order once again. So I believe that there is a discrepancy between the state vital saves internally to its own presets and the state vital gives over to the DAW to save and reload.
I will try to remember to update this issue with screenshots and audio later, but my house has construction right now and I don't have ready access to that PC.
I'm trying to put together a CMake-ified build of Vital, but I'm running into a snag in synthesis/effects_engine/sound_engine.cpp, specifically these lines:
Value* pitch_wheel = createBaseControl("pitch_wheel");
modulation_handler_->setPitchWheelControl(pitch_wheel);
Value* mod_wheel = createBaseControl("mod_wheel");
modulation_handler_->setModWheelControl(mod_wheel);
I get a compiler error here saying that setPitchWheelControl and setModWheelControl are not defined on EffectsModulationHandler. I also can't seem to find these functions defined there or in any of the parent classes. I only see setPitchWheel/setModWheel defined in VoiceHandler, but those take mono_floats, not Values.
Latest juce has quite some opengl fixes.
Sadly even after applying the juce patches from vital, the gui does not look right.
Have you seen this?
Will it be fixed in the next code update perhaps? This issue prevents me from updating juce on the distrho-ports project.
I did test other GUIs, they work, seems there is something specific on the way VItal deals with OpenGL that no longer works with latest JUCE, even with Vital-specific patches applied :(
According to XDG Base Directory Specification all the configurations should go to $XDG_CONFIG_HOME
. This would prevent cluttering $HOME
directory.
Please move the $HOME/.vital
to $XDG_CONFIG_HOME
(~/.config/vital
).
I posted this Standalone and VST3 build
I did my best to remove the instances of Vial and Vital and rendered it to Vitalium
Turned of the Authorization, no VST2 or LV2
If anyone wants to look at the vitalium-1.0.6 branch is where the changes I made are.
I am not a developer. Merely a Linux audio user that knows how to compile software and tweak code a bit (blunt hacking is more like it)
If there are changes that need to be made to comply with your wishes Matt please let me know and if you want me to take the builds down will do so in a jiffy.
Thanks
Hi, thanks a lot for making vital opensource!
I was about to try it out, but readme states:
Do not use the name "Vital", "Vital Audio", "Tytel" or "Matt Tytel" for marketing or to name any distribution of binaries built with this source
Would be weird to have vital packaged but having to use an alternative name.
The README currently notes additional restrictions on top of the GPL3 license being used. However, the GPL3 license specifically states:
If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term.
As such, any additional conditions being added are null and void. You should consider if you want to change your license or if you are okay with dropping your additional terms.
As a side note, because of this clause, distributing on iOS may in fact be possible without violating the license on your software. For further information, I refer you to an article on Stack Exchange discussing the problem.
Howdy -- currently tempo options for LFO include:
Seconds & Keytrack are based on true time, so altering the BPM of the song in a DAW does not impact it.
Tempo, Tempo Dotted, Tempo Triplets are based on BPM, so altering the BPM of the song does impact it. However, it is quantized -- Only clean fractions of the song tempo are possible values.
I would like to request a sixth option: BPM Multiple, a floating-point multiple of the BPM.
This would allow for any floating multiple of the BPM to be used as the LFO frequency. This would allow for, for instance, continuous transition between integer multiples (or fractions) of the BPM, which is currently not possible.
Ideally this mode would have a scale premultiplier which is identical to the existing tempo options, though this is not necessary for it to be functional.
Alternatively, add a continuous-value multiplier to the existing clean-fraction tempo options.
(I don't seem to have permissions to tag this as an enhancement or feature request? Sorry if I am just dumb)
I'm not sure, if this is the propper place for me to make a suggestion. But I've got some very minor workflow issues with Vital (altough it's my "daily driver" synth anyways)
So basically, it would be really usefull, to be able to set certain know values as default. For example, the LFO Smoothing know is really annoying me,and I'd like to default it to 0. It's a simple feature to implememt, but it's a lifesaver sometimes. It could bring a "reset to stock default value" (or something like that) option, to reset the user defined defaults, in case someone would mess tham up.
Now for the second feature that I really miss is double clicking to enter values. Maybe there could be a switch to control weather double clicking resets the parameter or opens the enter value box.
Alright that's it. I'm no programmer yet, I'm learning at the time, so af much as I'd like to contribute something myself, I can't, unless you'd be into translations to Hungarian, so I tough I'd "contribute" some ideas. I'm pretty sure I might not be the first to recomans theese features, so I'm sorry for bloating you with this
Anyways, keep up the amazing work, and have a wonderfull day
The filter 1 cutoff ignores settings and automation when a Logic project is playing. Plugin is in M1 AU format
Hi,
I'm trying to use Vital as a backend for a project and am trying to figure out how I can connect my interface to the synth, there is of course MIDI however i'd like to also read (for visualisation) and write values to the synth parameters. I've looked through the codebase but can't seem to find where the objects such as Osc 1, Osc 2, etc. are initialised and how to access them.
cp: cannot stat 'images/vital.xpm': No such file or directory
make: *** [Makefile:80: install_icons] Error 1
Thank-you for the great plugin work.
I would like to promote it by adding it to my site/app/command line tool:
https://studiorack.github.io/studiorack-site
This would involved forking your plugin and building binaries using GitHub actions. I have an example template here:
https://github.com/studiorack/studiorack-plugin-juce
Source code to the GitHub workflow which builds the JUCE plugin:
https://github.com/studiorack/studiorack-plugin-juce/blob/main/.github/workflows/release_projucer.yml
StudioRack is only for open-source plugins where there are direct links to binaries (no signups). However it looks like you prefer users to signup to download binaries? I don't want to circumvent your marketing activities.
Let me know your thoughts!
Kim
Operating System: Debian GNU/Linux 10
KDE Plasma Version: 5.14.5
Qt Version: 5.11.3
KDE Frameworks Version: 5.54.0
Kernel Version: 5.9.1-rt20avl1
OS Type: 64-bit
Processors: 4 × Intel® Core™ i5-3470 CPU @ 3.20GHz
Memory: 11.4 GiB of RAM
Vial Standalone and plugins build successfully but cannot load and the plugins crash
./vial
ERROR: Unable to load Firebase app options ([google-services-desktop.json, google-services.json] are missing or malformed)
ERROR: Failed to load default options when attempting to populate missing fields
ERROR: App ID and API key must be specified in App options.
ASSERT: /tmpfs/src/gfile/kokoro_authlinux-x86_64/firebase/auth/client/cpp/src/desktop/auth_desktop.cc(86): app
Killed
There does not seem to be any way to specify where to install the build.
Hi,
It looks like the Vital try to draw UI with very high FPS.
I've made a profile with nvidia-settings in ~/.nv :
{
"rules": [
{
"pattern": {
"feature": "procname",
"matches": "vial"
},
"profile": "profile_327b23c6"
}
],
"profiles": [
{
"name": "profile_327b23c6",
"settings": [
{
"key": "GLShowGraphicsOSD",
"value": true
},
{
"key": "GLSyncToVblank",
"value": true
}
]
}
]
}
If "GLSyncToVblank" is set to false then Vital window shows ~600-700 fps, this is too much I think. Setting it to true brings drawing to normal 60 fps (my display frame rate) and CPU usage to ~19% per one core.
PS this obviously works for Standalone version only.
I have a question regarding the license of presets shipped with Vital.
Can those be redistributed? If so, under what terms?
Currently any vital fork builds do not have any presets.
Would be nice to have at least a few of them, best if it would match the official "free" pack.
Hi there.
While packaging vital as vitalium, I noticed that there are a few issues present on the custom version that are not in the original.
I was told there is at least this patch applied in vital https://gist.github.com/wrl/240050fd46e14b688551c75ed2700076
There is also custom APIs that you added on top of JUCE.
Issue is, it is very hard at the moment to know what changes you made, much less reasons for doing so.
Please consider making a repo for tracking your juce changes. Or better, as I expect you do already have such a repo, please make it public. Thanks
I run on Artix Linux with i3, xcompmgr on a Thinkpad E495 with Radoen Vega graphics.
As soon as I fire up an instance of Vital, i have system-wide graphical artifacts on every animated object on screen aka cursor blinks in the terminal, scrolling in browser and so on and so forth. These look like colored squares flickering in an out.
Shutting down Vital or Bitwig doesnt stop this behaviour, killing xcompmgr and restarting does though.
The Plugin itself works flawlessly. Ive installed it per AUR.
Some Linux distributions require one in their package inclusion guidelines. For example: Solus package request guidelines
Releasing these will surely be a boon to the widespread adoption of this incredible software. Thanks for reading.
I noticed i have to set everytime Draft as oversampling setting for every single preset i create. Is it possible to force an overall/global oversampling settings no matter which presets i select? (Compare old NI Massive for example, which lets you do that.)
I know other oversampling setting is recommended, but i dont mind having not HQ full sound.
If that is not possible please add it!
PS: thanks for adding something like Draft MODE, very useful for older systems.
Hi,
I have been trying to build the XCode project found in the plugin/builds/osx
folder but it fails with the error above.
The vst2.x
folder mentioned is in the Steinberg VST SDK
which I have pasted into the third_party/VST_SDK/VST3_SDK/pluginterfaces
folder of the project but, it is still not compiling.
Any clues you could share on how to get this done?
Vital (CLAP version) crashes with a segfault when removed from a track.
Environment:
Steps to reproduce:
Expected behaviour: The plugin should be removed.
Problematic behaviour: The plugin segfaults, crashing the DAW.
Notes:
When adding an instance of Vital in FL Studio 20, the GUI flickers when:
I am using Wine 6.14 on Manjaro 21.1.1 KDE.
make
....
make -C standalone/builds/linux CONFIG=Release SIMDFLAGS="-msse2" GLFLAGS="" BUILD_DATE="2021 03 27 00 37"
make[1]: Verzeichnis „/usr/src/fremd/vital/standalone/builds/linux“ wird betreten
make[1]: Für das Ziel „all“ ist nichts zu tun.
make[1]: Verzeichnis „/usr/src/fremd/vital/standalone/builds/linux“ wird verlassen
make -C plugin/builds/linux_vst VST3 CONFIG=Release AR=gcc-ar SIMDFLAGS="-msse2" GLFLAGS="" BUILD_DATE="2021 03 27 00 37"
make[1]: Verzeichnis „/usr/src/fremd/vital/plugin/builds/linux_vst“ wird betreten
Compiling include_juce_audio_plugin_client_VST3.cpp
In Datei, eingebunden von ../../../third_party/JUCE/modules/juce_audio_plugin_client/juce_audio_plugin_client_VST3.cpp:26,
von ../../JuceLibraryCode/include_juce_audio_plugin_client_VST3.cpp:9:
../../../third_party/JUCE/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp:32:24: Warnung: mehrere Token am Ende der Direktive #include
32 | #include <arpa/inet.h>^M
| ^
In Datei, eingebunden von ../../../third_party/JUCE/modules/juce_audio_plugin_client/juce_audio_plugin_client_VST3.cpp:26,
von ../../JuceLibraryCode/include_juce_audio_plugin_client_VST3.cpp:9:
../../../third_party/JUCE/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp:33:7: Warnung: mehrere Token am Ende der Direktive #endif [-Wendif-labels]
33 | #endif^M
| ^
In Datei, eingebunden von ../../../third_party/JUCE/modules/juce_audio_plugin_client/juce_audio_plugin_client_VST3.cpp:26,
von ../../JuceLibraryCode/include_juce_audio_plugin_client_VST3.cpp:9:
../../../third_party/JUCE/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp:69:11: schwerwiegender Fehler: pluginterfaces/vst2.x/vstfxstore.h: Datei oder Verzeichnis nicht gefunden
69 | #include "pluginterfaces/vst2.x/vstfxstore.h"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Kompilierung beendet.
make[1]: *** [Makefile:206: build/intermediate/Release/include_juce_audio_plugin_client_VST3_dd633589.o] Fehler 1
make[1]: Verzeichnis „/usr/src/fremd/vital/plugin/builds/linux_vst“ wird verlassen
make: *** [Makefile:100: vst3] Fehler 2
Hello :)
I'd like to suggest moving the user preset folder up, so it appears first in the preset list. It would make it a lot easier to access your own presets.
As it is now, if you have many preset banks installed, you have to scroll all the way down to "u" to find the user folder. Since it's alphabetic, the user folder will always be way down the list.
To me it just makes more sense to have your own user folder at the top of the list :)
Best wishes,
Jakob
Would be cool to make it compile on macOS -- I'll take a look but can't guarantee much
Popup menus, like in the matrix target selection or here in the filter selector, are staying open forever in Reaper, even when I close and reopen the plugin. They disappear only when reopening Reaper. Using Ubuntu 23.04, Gnome, X, Nvidia.
The problem does not occur in the standalone version. It does happen in Ardour too. Tried both the CLAP and VST3 versions - same bug.
Vital forum issue links:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.