Coder Social home page Coder Social logo

vital's Introduction

Vital

Vital is a spectral warping wavetable synthesizer. This is the source.

This repository is updated on a delay after binary releases.

Code Licensing

If you are making a proprietary or closed source app and would like to use Vital's source code, contact [email protected] for non GPLv3 licensing options.

Installing

Create an account and download Vital at vital.audio

Issues

Report bugs (e.g.non-code and non-compiling issues) to https://forum.vital.audio

Feel free to report issues on building/compiling here but note that I'm not prioritizing them.

Pull requests

I will not take any pull requests.

What can you do with the source

The source code is licensed under the GPLv3. If you download the source or create builds you must comply with that license.

Things you can't do with this source

  • Do not create an app and distribute it on the iOS app store. The app store is not comptabile with GPLv3 and you'll only get an exception for this if you're paying for a GPLv3 exception for Vital's source (see Code Licensing above).
  • 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. This source code does not give you rights to infringe on trademarks.
  • Do not connect to any web service at https://vital.audio, https://account.vital.audio or https://store.vital.audio from your own builds. This is against the terms of using those sites.
  • Do not distribute the presets that come with the free version of Vital. They're under a separate license that does not allow redistribution.

vital's People

Contributors

mtytel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vital's Issues

juce_VST_Wrapper.cpp: 'pluginterfaces/vst2.x/aeffect.h' file not found

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?

Multiple GUI instances of Vital open causes deadlock if the host also uses OpenGL on Linux with NVidia

Hello,
as the title says:

  • My host (https://ossia.io) uses OpenGL for rendering under Linux (in the main thread)
  • I can run one instance of vital without issues (but maybe I've just been lucky)
  • However, if I open a second vital UI, I get a deadlock of the whole software very quickly:

main thread:
lock1

vital:
lock2

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 ?

no JACK ports created

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

Set Global Oversampling Setting?

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.

Requires SSE2, NEON or AVX2 compatible processor.

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?

Licensing of presets included with free version

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.

Where is setPitchWheelControl/setModWheelControl defined?

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.

System-wide graphical switches after using Vital

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.

[Suggestion/Feature Request] Making Values Default & Double Click to Enter Value

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

Feature suggestion - Make user preset folder appear first in the preset browser!

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

Permission to fork and use github actions to build binaries for StudioRack

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

Allow distribution with Vital name

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.

Incompatible with newer juce

Latest juce has quite some opengl fixes.
Sadly even after applying the juce patches from vital, the gui does not look right.

image

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 :(

Web Audio Module support

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?

segfault in `juce::AudioFormatWriter::writeFromFloatArrays` when using `--render` on macOS

While trying to use the --render command of the Vital CLI on macOS, I got a segfault.

Source: https://www.reddit.com/r/VitalSynth/comments/16hrx39/comment/k86801j/?utm_source=share&utm_medium=web2x&context=3

⇒ 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

crashreport.txt

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..

FXs per OSC

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!

Vital idea

Blend options in wavetable editor not working

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.

Vital ignores mod and pitch wheel inputs in non MPE-compatible DAWs

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

Building on macOS

Would be cool to make it compile on macOS -- I'll take a look but can't guarantee much

Icons turns black in lv2 plugin

I am on Manjaro and this this happens in both carla and ardour.
To recreate it, open the plugin gui, close it, and open it again.
image

crash when resizing window using PipeWire JACK library

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

Vitalium for Debian

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

Using Vital as backend

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.

License for presets

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.

Allow non-quantized tempo-multiple frequencies on LFOs

Howdy -- currently tempo options for LFO include:

  • Seconds
  • Tempo
  • Tempo Dotted
  • Tempo Triplets
  • Keytrack

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)

Portable .dll version + preset folder

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!

Please release custom JUCE changes as standalone repo

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

Key-tracking with custom tuning messes up plugin state

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.

strange build error

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

Popup menus are never closing in Linux

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:

image

How to fix high CPU/GPU usage on NVIDIA Card.

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.

Unable to load Firebase app options

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

License with additional terms?

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.

Not building on Raspberry Pi OS (32-bit)

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'

Build Issue Solved

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.

can*t compile VST/juce_VST_Wrapper.cpp:87:10: Error

 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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.