[announce] VeeSeeVST Rack VST2 plugin

Modular Synth design and releases (Reaktor, SynthEdit, Tassman, etc.)
User avatar
StudioDave
KVRian
920 posts since 23 Jun, 2007 from Findlay OH USA

Post Sun Sep 30, 2018 6:53 am

astartes wrote:
Sat Sep 29, 2018 11:05 pm
The Modular 80 Stuff is not open Source i guess...
It is:

https://github.com/cschol/modular80

sth
KVRist
85 posts since 20 May, 2018

Re: [announce] VeeSeeVST Rack VST2 plugin

Post Tue Oct 02, 2018 2:59 pm

I am very interested in a Linux build. Do you take donations, and if so how motivating is that?

bsp804
KVRist
109 posts since 23 May, 2017

Re: [announce] VeeSeeVST Rack VST2 plugin

Post Sat Oct 06, 2018 3:43 am

bionrg wrote:
Tue Sep 25, 2018 8:07 am
the current version won't load in Bitwig 2.4, error displayed:
"Plugin host died: end of stream".
VSV-Bitwig.jpg

maybe if it would not be too much of a hassle for you, you can try download their demo to see why it wont load? [..]
I just downloaded the demo version of Bitwig (v2.4, 2018-09-11) and the plugin worked fine (I tried the x64 version of the instrument plugin).

robouser wrote:
Thu Sep 27, 2018 1:53 pm
Hi, is there any way to get Matthew Friedrichs' Floats module or the Audible preview modules to show up in VeeSeeVST? I've purchased licenses to them all, but it looks like simply copying them to the VST's directory is not enough.[..]
sry, VCVR plugin binaries won't work in VSVR (as explained earlier in this thread).

astartes wrote:
Sat Sep 29, 2018 11:05 pm
The Modular 80 Stuff is not open Source i guess (same as with Nysthi and Vult, not portable cause of Copyrights)?
It is open source. VSVR currently includes Modular 80's "Logistiker" module.

sth wrote:
Tue Oct 02, 2018 2:59 pm
I am very interested in a Linux build. Do you take donations, and if so how motivating is that?
Money's not an incentive for me (this is just a hobby project, and no, I'm not taking donations).
While I do like Linux and am using it on a daily basis (for non-audio related work), I think it'd be better if someone who actually wants to use the plugin on Linux him/herself would do the port.
The main tasks are porting the OSAL (LGLW) to Linux, and writing some makefiles (mainly a copy'n'paste job I guess). Plus testing, lot's of testing... ;)

sth
KVRist
85 posts since 20 May, 2018

Re: [announce] VeeSeeVST Rack VST2 plugin

Post Sat Oct 06, 2018 9:11 am

With a little guidance, I'm up for it. I briefly dived into it, had migrated a few makefiles, but saw a handful of errors that I wasn't immediately sure about. Since I knew that some things would have to be ported, but I didn't know what, I figured I was out of my league. That's a starting place at the least.

sth
KVRist
85 posts since 20 May, 2018

Re: [announce] VeeSeeVST Rack VST2 plugin

Post Mon Oct 08, 2018 5:40 pm

OK, bsb, I've made a lot of progress but I've stalled. With some tweaks, I can compile the shared_lib, then the plugins (minus a couple that had issues), but not the VSTs. I have a couple of points to hit first:

There's a few lines in plugin.cpp and vst2_main.cpp like:

Code: Select all

extern "C" extern...
This results in compilation errors in everything but clang++ (but it has other errors), and everything I've researched says that this basically should not work or happen. Removing the second extern fixes the errors. Was this done for a specific reason, or perhaps the M$ tools don't care about it?

There's a few lines in plugin.hpp like:

Code: Select all

init_plugin_##pluginname##
This also causes compilation errors, and everything I've researched uses the first set of tokenization characters but not the ones at the end. Same questions as the previous issue...

Going back to my main issue that's stopped me, running plain make to build the VST fails during linking with a ton of 'undefined reference to' errors. I've tried ld, c++, and g++ for the linking stage, but this always happens. I'm not sure where I've done something wrong, e.g. very early in the build or at the end. Here's a sample output:

Code: Select all

g++ src/vst2_main.o src/main.o   dep/lib/msvc/x64/libspeexdsp.lib dep/lib/msvc/x64/glew.lib plugins/community/repos//21kHz/21kHz.lib plugins/community/repos//AmalgamatedHarmonics/AmalgamatedHarmonics.lib plugins/community/repos//Alikins/Alikins.lib plugins/community/repos//alto777_LFSR/alto777_LFSR.lib plugins/community/repos//AS/AS.lib plugins/community/repos//AudibleInstruments/AudibleInstruments.lib plugins/community/repos//BaconMusic/BaconMusic.lib plugins/community/repos//Befaco/Befaco.lib plugins/community/repos//Bidoo/Bidoo.lib plugins/community/repos//Bogaudio/Bogaudio.lib plugins/community/repos//CastleRocktronics/CastleRocktronics.lib plugins/community/repos//com-soundchasing-stochasm/com-soundchasing-stochasm.lib plugins/community/repos//computerscare/computerscare.lib plugins/community/repos//DHE-Modules/DHE-Modules.lib plugins/community/repos//DrumKit/DrumKit.lib plugins/community/repos//ErraticInstruments/ErraticInstruments.lib plugins/community/repos//ESeries/ESeries.lib plugins/community/repos//FrankBussFormula/FrankBussFormula.lib plugins/community/repos//FrozenWasteland/FrozenWasteland.lib plugins/community/repos//Fundamental/Fundamental.lib plugins/community/repos//Geodesics/Geodesics.lib plugins/community/repos//Gratrix/Gratrix.lib plugins/community/repos//HetrickCV/HetrickCV.lib plugins/community/repos//huaba/huaba.lib plugins/community/repos//ImpromptuModular/ImpromptuModular.lib plugins/community/repos//JE/JE.lib plugins/community/repos//JW-Modules/JW-Modules.lib plugins/community/repos//Koralfx-Modules/Koralfx-Modules.lib plugins/community/repos//LindenbergResearch/LindenbergResearch.lib plugins/community/repos//LOGinstruments/LOGinstruments.lib plugins/community/repos//mental/mental.lib plugins/community/repos//ML_modules/ML_modules.lib plugins/community/repos//moDllz/moDllz.lib plugins/community/repos//modular80/modular80.lib plugins/community/repos//mscHack/mscHack.lib plugins/community/repos//mtsch-plugins/mtsch-plugins.lib plugins/community/repos//NauModular/NauModular.lib plugins/community/repos//Nohmad/Nohmad.lib plugins/community/repos//Ohmer/Ohmer.lib plugins/community/repos//PG-Instruments/PG-Instruments.lib plugins/community/repos//PvC/PvC.lib plugins/community/repos//Qwelk/Qwelk.lib plugins/community/repos//RJModules/RJModules.lib plugins/community/repos//SerialRacker/SerialRacker.lib plugins/community/repos//SonusModular/SonusModular.lib plugins/community/repos//Southpole/Southpole.lib plugins/community/repos//Southpole-parasites/Southpole-parasites.lib plugins/community/repos//squinkylabs-plug1/squinkylabs-plug1.lib plugins/community/repos//SubmarineFree/SubmarineFree.lib plugins/community/repos//SynthKit/SynthKit.lib plugins/community/repos//Template/Template.lib plugins/community/repos//TheXOR/TheXOR.lib plugins/community/repos//trowaSoft/trowaSoft.lib plugins/community/repos//unless_modules/unless_modules.lib Rack.lib  -o veeseevstrack_instr.so
/usr/bin/ld: Rack.lib(window.o): in function `vst2_set_globals(void*)':
window.cpp:(.text+0x132b0): multiple definition of `vst2_set_globals(void*)'; src/vst2_main.o:vst2_main.cpp:(.text+0x7ef0): first defined here
/usr/bin/ld: Rack.lib(window.o): in function `vst2_window_size_set(int, int)':
window.cpp:(.text+0x132c0): multiple definition of `vst2_window_size_set(int, int)'; src/vst2_main.o:vst2_main.cpp:(.text+0x7f30): first defined here
/usr/bin/ld: Rack.lib(window.o): in function `vst2_refresh_rate_set(float)':
window.cpp:(.text+0x132d0): multiple definition of `vst2_refresh_rate_set(float)'; src/vst2_main.o:vst2_main.cpp:(.text+0x7f90): first defined here
/usr/bin/ld: src/vst2_main.o: in function `vst2_refresh_rate_set(float)':
vst2_main.cpp:(.text+0x8000): undefined reference to `lglw_timer_stop'
/usr/bin/ld: src/vst2_main.o: in function `lglw_timer_cbk':
vst2_main.cpp:(.text+0x8077): undefined reference to `lglw_userdata_get'
EDIT: I'm assuming nearly all of the undefined references are dependency issues, as so far they specifically relate to jansson, lglw, osdialog, and so on. Perhaps I just need to know the proper build steps to get this working in an ideal case? I've figured just from experimentation that I need the plugins to build the VST, and I need the shared_lib to build the plugins, so I build in that reverse order. I do end up with libspeexdsp.lib, glew.lib, and jansson.lib that are linked against, but clearly something with the dependencies is not working.

EDIT2: While I was able to recreate the three libs and overwrite the includes ones, I'm still getting the same undefined reference issues.

EDIT3: OK, my issues with undefined references are clearly due to a lack of understanding of making and using shared/static libraries. I was using ar to create .a files out of the .o files, but when the .a files are later included in other .a files, the references no longer work. I can see with ar that the table seems fine, but using nm reveals that the included .a files are "unrecognized file format." Swapping the .a files for the .o files that are in them remove these warnings, but I think I'm going about that wrongly.

Claquoss
KVRer
4 posts since 10 Oct, 2018

Re: [announce] VeeSeeVST Rack VST2 plugin

Post Wed Oct 10, 2018 2:11 am

Hello! First, very good work, im having a lot of fun learning modular stuff with VSVST, thank you!

I have an issue in fl studio: i cant sync VSV to the DAW bpm (other than writting midi notes on each beat). In fact, no signal is coming out from the click1 and click 2 outputs in the MIDI1 module. Is there something specific i should do , or is it something to be corrected?

Thank you, and sorry for my approximative english..

Mutant
KVRAF
3348 posts since 9 Oct, 2004 from Poland

Re: [announce] VeeSeeVST Rack VST2 plugin

Post Wed Oct 10, 2018 2:18 am

Claquoss wrote:
Wed Oct 10, 2018 2:11 am
Hello! First, very good work, im having a lot of fun learning modular stuff with VSVST, thank you!

I have an issue in fl studio: i cant sync VSV to the DAW bpm (other than writting midi notes on each beat). In fact, no signal is coming out from the click1 and click 2 outputs in the MIDI1 module. Is there something specific i should do , or is it something to be corrected?

Thank you, and sorry for my approximative english..
Do you have your audio module connected to any sources ?
Maybe the plugin detects it is in idle state ?
You could turn off idle detection in the settings.json file.
[====[\\\\\\\\]>------,

Ay caramba !

Claquoss
KVRer
4 posts since 10 Oct, 2018

Re: [announce] VeeSeeVST Rack VST2 plugin

Post Wed Oct 10, 2018 6:01 am

Mutant wrote:
Wed Oct 10, 2018 2:18 am
Claquoss wrote:
Wed Oct 10, 2018 2:11 am
Hello! First, very good work, im having a lot of fun learning modular stuff with VSVST, thank you!

I have an issue in fl studio: i cant sync VSV to the DAW bpm (other than writting midi notes on each beat). In fact, no signal is coming out from the click1 and click 2 outputs in the MIDI1 module. Is there something specific i should do , or is it something to be corrected?

Thank you, and sorry for my approximative english..
Do you have your audio module connected to any sources ?
Maybe the plugin detects it is in idle state ?
You could turn off idle detection in the settings.json file.
Hey thank you for your quick reply:

- My audio module is connected to a mixer receiving the different oscillators sounds (is it what u were asking for?)
- what is idle detection? and how could i turn it off?

thank you!

Claquoss
KVRer
4 posts since 10 Oct, 2018

Re: [announce] VeeSeeVST Rack VST2 plugin

Post Wed Oct 10, 2018 6:13 am

Claquoss wrote:
Wed Oct 10, 2018 6:01 am
Mutant wrote:
Wed Oct 10, 2018 2:18 am
Claquoss wrote:
Wed Oct 10, 2018 2:11 am
Hello! First, very good work, im having a lot of fun learning modular stuff with VSVST, thank you!

I have an issue in fl studio: i cant sync VSV to the DAW bpm (other than writting midi notes on each beat). In fact, no signal is coming out from the click1 and click 2 outputs in the MIDI1 module. Is there something specific i should do , or is it something to be corrected?

Thank you, and sorry for my approximative english..
Do you have your audio module connected to any sources ?
Maybe the plugin detects it is in idle state ?
You could turn off idle detection in the settings.json file.
Hey thank you for your quick reply:

- My audio module is connected to a mixer receiving the different oscillators sounds (is it what u were asking for?)
- what is idle detection? and how could i turn it off?

thank you!
EDIT: i managed to turn idle detection off but i still havent any signal coming out from click1 and click2..

Mutant
KVRAF
3348 posts since 9 Oct, 2004 from Poland

Re: [announce] VeeSeeVST Rack VST2 plugin

Post Wed Oct 10, 2018 7:35 am

Claquoss wrote:
Wed Oct 10, 2018 6:13 am
Claquoss wrote:
Wed Oct 10, 2018 6:01 am
Mutant wrote:
Wed Oct 10, 2018 2:18 am
Claquoss wrote:
Wed Oct 10, 2018 2:11 am
Hello! First, very good work, im having a lot of fun learning modular stuff with VSVST, thank you!

I have an issue in fl studio: i cant sync VSV to the DAW bpm (other than writting midi notes on each beat). In fact, no signal is coming out from the click1 and click 2 outputs in the MIDI1 module. Is there something specific i should do , or is it something to be corrected?

Thank you, and sorry for my approximative english..
Do you have your audio module connected to any sources ?
Maybe the plugin detects it is in idle state ?
You could turn off idle detection in the settings.json file.
Hey thank you for your quick reply:

- My audio module is connected to a mixer receiving the different oscillators sounds (is it what u were asking for?)
- what is idle detection? and how could i turn it off?

thank you!
EDIT: i managed to turn idle detection off but i still havent any signal coming out from click1 and click2..
It works for me as long as the song in the DAW is running (play button).
[====[\\\\\\\\]>------,

Ay caramba !

bsp804
KVRist
109 posts since 23 May, 2017

Re: [announce] VeeSeeVST Rack VST2 plugin

Post Wed Oct 10, 2018 10:07 am

sth wrote:
Mon Oct 08, 2018 5:40 pm
[..]There's a few lines in plugin.cpp and vst2_main.cpp like:

Code: Select all

extern "C" extern...
This results in compilation errors in everything but clang++ (but it has other errors), and everything I've researched says that this basically should not work or happen. Removing the second extern fixes the errors. Was this done for a specific reason, or perhaps the M$ tools don't care about it?
GCC needs {} for extern "C". Leaving them out for single line declarations is apparently a non-standard shortcut.
(and no, you can't just remove the second "extern" or you'll end up with "multiple definition" errors).
sth wrote:
Mon Oct 08, 2018 5:40 pm
There's a few lines in plugin.hpp like:

Code: Select all

init_plugin_##pluginname##
This also causes compilation errors, and everything I've researched uses the first set of tokenization characters but not the ones at the end. Same questions as the previous issue...
This also is a non-standard MSVC shortcut which needs to be written a little bit differently for GCC (you need two additional macros).

I've just updated the GitHub repo and added some very preliminary Linux/GCC support which allows you to build the lib and shared_lib targets.

I'd suggest to remove the 3rd party modules for now and focus on the Rack host. Once that's working (and this will take some time) you can bring them back one by one.

The biggest task is to port LGLW to Linux.

Maybe you'll find another lib that you can forward the calls to.
SDL or GLFW won't work since they cannot handle multiple initialisations which are needed for multiple VST plugin instances. Maybe there's something else (as a last resort, you'll have to use Xlib just like the Windows version uses the native Windows API).
You can leave out some of the "unusual" stuff like the keyboard hooks or the touch support, maybe the hooks are not even needed in your Linux VST host (the problem on Windows was that the host consumed almost all keyboard input before it could reach the plugin window).

Re: the nested archive (.a) question: Maybe you can use "thin" archives (via "ar rT") ? Or just don't nest them and link the .a files when the executables (VST .so / plugin .so) are created.

Last but not least, I think we should move this conversation over to GitHub. Most people here won't understand / are not interested in these kind of coding details, I guess ;) (just open a ticket in the issue tracker).

Claquoss wrote:
Wed Oct 10, 2018 2:11 am
I have an issue in fl studio: i cant sync VSV to the DAW bpm (other than writting midi notes on each beat). In fact, no signal is coming out from the click1 and click 2 outputs in the MIDI1 module. Is there something specific i should do , or is it something to be corrected?
Apparently FLS does not report the tempo. It does report the ppqPos, so the timing code in VSVR could be changed to use that information instead (I'll take a look into this later this week).
Claquoss wrote:
Wed Oct 10, 2018 2:11 am
- what is idle detection? and how could i turn it off?
(+@Mutant) it's a CPU saver feature that turns off audio processing when the output level falls below a certain threshold. You can turn that off in the toolbar menu (there's an "Always Active" option). However, this is most likely not the cause for the FLStudio clock issue.

melodyz
KVRist
182 posts since 29 Mar, 2016

Re: [announce] VeeSeeVST Rack VST2 plugin

Post Fri Oct 12, 2018 3:40 am

Hi is september 10 changelog the latest update?
Last edited by melodyz on Fri Oct 12, 2018 3:45 am, edited 1 time in total.

melodyz
KVRist
182 posts since 29 Mar, 2016

Re: [announce] VeeSeeVST Rack VST2 plugin

Post Fri Oct 12, 2018 3:41 am

hi which files do I need to make sure and copy back in for my presets?

bsp804
KVRist
109 posts since 23 May, 2017

Re: [announce] VeeSeeVST Rack VST2 plugin

Post Fri Oct 12, 2018 5:53 am

Claquoss wrote:
Wed Oct 10, 2018 6:13 am
EDIT: i managed to turn idle detection off but i still havent any signal coming out from click1 and click2..
as promised, I looked into this and added some code that fixes the timing clock in FLStudio (tested with the FLS20 trial version).
melodyz wrote:
Fri Oct 12, 2018 3:41 am
hi which files do I need to make sure and copy back in for my presets?
The *.vcv files (where ever you saved them) and / or any VSVR patch files saved by your DAW (*.fxp, ..).


Changelog:

Code: Select all

** October 12th, 2018
- add support for ppqPos based timing clock
   (fixes CLK1/2 output in FLStudio)
veeseevstrack_0_6_1_win64_bin-12Oct2018.7z
veeseevstrack_0_6_1_win32_bin-12Oct2018.7z

deftinwulf
KVRer
4 posts since 5 Sep, 2018

Re: [announce] VeeSeeVST Rack VST2 plugin

Post Mon Oct 15, 2018 7:56 am

Amazing! Thank you so much for your continued efforts, BSP! Having Rack as a plugin in my DAW is a lifechanging experience. It's what I've wanted for so many years now. I've been following along with the development and I get a particular feeling of joy every time I get to upgrade to a new version of VeeSee. Thank you again!

Return to “Modular Synthesis”