Login / Register 0 items | $0.00 New @ KVR
bsp804
KVRist
 
67 posts since 23 May, 2017

Postby bsp804; Sat Jun 30, 2018 2:21 am [announce] VeeSeeVST Rack VST2 plugin

Hi everyone,

I have ported VCV Rack 0.6.1 to the VST2 format.

Here's a video of it:
https://vimeo.com/277703414

..and here are the binaries for x64 Windows: vcvrack_0_6_1_vst2_bin_win64-29Jun2018.7z (removed)
veeseevstrack_0_6_1_vst2_bin_win64-01Jul2018.7z (removed)
EDIT: you can find the latest version on github

The plugin has been tested in my own host ("Eureka"), in Reaper, and in Reason 10.

The binaries include the "Fundamental", and the "AudibleInstruments" modules, which are ports of the Mutable Instruments Eurorack modules Braids, Elements, Tides, Clouds, Warps, Rings, Links, Kinks, Shades, Branches, Blinds, Veils, and Frames.

EDIT: a lot of modules have been added in the meantime.
Here's the complete list:
Code: Select all
 - AS.ADSR
 - AS.AtNuVrTr
 - AS.BPMCalc
 - AS.BPMClock
 - AS.BlankPanel4
 - AS.BlankPanel6
 - AS.BlankPanel8
 - AS.BlankPanelSpecial
 - AS.Cv2T
 - AS.DelayPlusFx
 - AS.DelayPlusStereoFx
 - AS.Flow
 - AS.KillGate
 - AS.LaunchGate
 - AS.Merge2.5
 - AS.Mixer8ch
 - AS.MonoVUmeter
 - AS.Multiple2.5
 - AS.PhaserFx
 - AS.QuadVCA
 - AS.ReverbFx
 - AS.ReverbStereoFx
 - AS.SEQ16
 - AS.SawOsc
 - AS.SignalDelay
 - AS.SineOsc
 - AS.Steps
 - AS.SuperDriveFx
 - AS.TremoloFx
 - AS.TremoloStereoFx
 - AS.TriLFO
 - AS.TriggersMKI
 - AS.TriggersMKII
 - AS.VCA
 - AS.WaveShaper
 - AS.StereoVUmeter
 - AudibleInstruments.Braids
 - AudibleInstruments.Elements
 - AudibleInstruments.Tides
 - AudibleInstruments.Clouds
 - AudibleInstruments.Warps
 - AudibleInstruments.Rings
 - AudibleInstruments.Links
 - AudibleInstruments.Kinks
 - AudibleInstruments.Shades
 - AudibleInstruments.Branches
 - AudibleInstruments.Blinds
 - AudibleInstruments.Veils
 - AudibleInstruments.Frames
 - Befaco.ABC
 - Befaco.DualAtenuverter
 - Befaco.EvenVCO
 - Befaco.Mixer
 - Befaco.Rampage
 - Befaco.SlewLimiter
 - Befaco.SpringReverb
 - Bidoo.DTROY
 - Bidoo.BORDL
 - Bidoo.MU
 - Bidoo.TOCANTE
 - Bidoo.CHUTE
 - Bidoo.LATE
 - Bidoo.LOURDE
 - Bidoo.ACNE
 - Bidoo.DUKE
 - Bidoo.MOIRE
 - Bidoo.FORK
 - Bidoo.TIARE
 - Bidoo.CLACOS
 - Bidoo.ANTN
 - Bidoo.LIMBO
 - Bidoo.PERCO
 - Bidoo.BAR
 - Bidoo.ZINC
 - Bidoo.VOID
 - Bidoo.SIGMA
 - Bogaudio.VCO
 - Bogaudio.XCO
 - Bogaudio.Additator
 - Bogaudio.FMOp
 - Bogaudio.LFO
 - Bogaudio.EightFO
 - Bogaudio.DADSRH
 - Bogaudio.DADSRHPlus
 - Bogaudio.DGate
 - Bogaudio.Shaper
 - Bogaudio.ShaperPlus
 - Bogaudio.ADSR
 - Bogaudio.Follow
 - Bogaudio.Mix4
 - Bogaudio.Mix8
 - Bogaudio.VCM
 - Bogaudio.Pan
 - Bogaudio.XFade
 - Bogaudio.VCA
 - Bogaudio.VCAmp
 - Bogaudio.Analyzer
 - Bogaudio.VU
 - Bogaudio.Detune
 - Bogaudio.Stack
 - Bogaudio.Reftone
 - Bogaudio.Bool
 - Bogaudio.CVD
 - Bogaudio.FlipFlop
 - Bogaudio.Manual
 - Bogaudio.Mult
 - Bogaudio.Noise
 - Bogaudio.Offset
 - Bogaudio.SampleHold
 - Bogaudio.Sums
 - Bogaudio.Switch
 - Bogaudio.Lag
 - Bogaudio.RM
 - Bogaudio.Test
 - Bogaudio.Test2
 - Bogaudio.ThreeHP
 - Bogaudio.SixHP
 - Bogaudio.EightHP
 - Bogaudio.TenHP
 - Bogaudio.TwelveHP
 - Bogaudio.ThirteenHP
 - Bogaudio.FifteenHP
 - Bogaudio.EighteenHP
 - Bogaudio.TwentyHP
 - Bogaudio.TwentyTwoHP
 - Bogaudio.TwentyFiveHP
 - Bogaudio.ThirtyHP
 - cf.trSEQ
 - cf.LEDSEQ
 - cf.L3DS3Q
 - cf.SLIDERSEQ
 - cf.PLAYER
 - cf.STEPS
 - cf.METRO
 - cf.EACH
 - cf.FOUR
 - cf.PEAK
 - cf.MONO
 - cf.STEREO
 - cf.MASTER
 - cf.SUB
 - cf.CUBE
 - cf.PATCH
 - cf.LEDS
 - cf.DAVE
 - ESeries.E340
 - ErraticInstruments.MPEToCV
 - ErraticInstruments.QuadMPEToCV
 - FrozenWasteland.BPMLFO
 - FrozenWasteland.BPMLFO2
 - FrozenWasteland.DamianLillard
 - FrozenWasteland.EverlastingGlottalStopper
 - FrozenWasteland.HairPick
 - FrozenWasteland.LissajousLFO
 - FrozenWasteland.MrBlueSky
 - FrozenWasteland.TheOneRingModulator
 - FrozenWasteland.PhasedLockedLoop
 - FrozenWasteland.PortlandWeather
 - FrozenWasteland.QuadEuclideanRhythm
 - FrozenWasteland.QuadGolombRulerRhythm
 - FrozenWasteland.QuantussyCell
 - FrozenWasteland.RouletteLFO
 - FrozenWasteland.SeriouslySlowLFO
 - FrozenWasteland.VoxInhumana
 - FrozenWasteland.CDCSeriouslySlowLFO
 - Fundamentals.8vert
 - Fundamentals.ADSR
 - Fundamentals.Delay
 - Fundamentals.LFO
 - Fundamentals.LFO2
 - Fundamentals.Mutes
 - Fundamentals.SEQ3
 - Fundamentals.SequentialSwitch1
 - Fundamentals.SequentialSwitch2
 - Fundamentals.Scope
 - Fundamentals.Unity
 - Fundamentals.VCA
 - Fundamentals.VCF
 - Fundamentals.VCMixer
 - Fundamentals.VCO
 - Fundamentals.VCO2
 - HetrickCV.TwoToFour
 - HetrickCV.AnalogToDigital
 - HetrickCV.ASR
 - HetrickCV.Bitshift
 - HetrickCV.BlankPanel
 - HetrickCV.Boolean3
 - HetrickCV.Comparator
 - HetrickCV.Contrast
 - HetrickCV.Crackle
 - HetrickCV.Delta
 - HetrickCV.DigitalToAnalog
 - HetrickCV.Dust
 - HetrickCV.Exponent
 - HetrickCV.FlipFlop
 - HetrickCV.FlipPan
 - HetrickCV.GateJunction
 - HetrickCV.LogicCombine
 - HetrickCV.RandomGates
 - HetrickCV.Rotator
 - HetrickCV.Scanner
 - HetrickCV.Waveshape
 - huaba.EQ3
 - huaba.ABBus
 - Koralfx.Beatovnik
 - Koralfx.Mixovnik
 - Koralfx.Nullovnik4
 - Koralfx.Nullovnik6
 - Koralfx.Presetovnik
 - Koralfx.Quantovnik
 - Koralfx.Scorovnik
 - LindenbergResearch.SimpleFilter
 - LindenbergResearch.MS20Filter
 - LindenbergResearch.AlmaFilter
 - LindenbergResearch.ReShaper
 - LindenbergResearch.BlankPanel
 - LindenbergResearch.BlankPanelM1
 - LOGinstruments.constant
 - LOGinstruments.constant2
 - LOGinstruments.Speck
 - LOGinstruments.Britix
 - LOGinstruments.Compa
 - LOGinstruments.LessMess
 - LOGinstruments.Velvet
 - LOGinstruments.Crystal
 - modular80.Logistiker
 - mtsch_plugins.Sum
 - mtsch_plugins.Rationals
 - mtsch_plugins.TriggerPanic
 - NauModular.Tension
 - NauModular.Function
 - NauModular.Perlin
 - NauModular.S_h_it
 - NauModular.BitHammer
 - NauModular.Osc
 - ML_modules.Quantizer
 - ML_modules.Quantum
 - Southpole-parasites.Annuli
 - Southpole-parasites.Splash
 - ML_modules.TrigBuf
 - ML_modules.SeqSwitch
 - ML_modules.SeqSwitch2
 - ML_modules.ShiftRegister
 - ML_modules.ShiftRegister2
 - ML_modules.FreeVerb
 - ML_modules.Sum8
 - ML_modules.Sum8mk2
 - ML_modules.SH8
 - ML_modules.Constants
 - ML_modules.Counter
 - ML_modules.TrigDelay
 - ML_modules.BPMdetect
 - ML_modules.VoltMeter
 - ML_modules.OctaFlop
 - ML_modules.OctaTrig
 - ML_modules.OctaSwitch
 - ML_modules.TrigSwitch
 - ML_modules.TrigSwitch2
 - ML_modules.TrigSwitch3
 - ML_modules.TrigSwitch3_2
 - Qwelk.Automaton
 - Qwelk.Byte
 - Qwelk.Chaos
 - Qwelk.Column
 - Qwelk.Gate
 - Qwelk.Or
 - Qwelk.Not
 - Qwelk.Xor
 - Qwelk.Mix
 - Qwelk.News
 - Qwelk.Scaler
 - Qwelk.Wrap
 - Qwelk.XFade
 - SonusModular.Addiction
 - SonusModular.Bitter
 - SonusModular.Bymidside
 - SonusModular.Campione
 - SonusModular.Chainsaw
 - SonusModular.Ctrl
 - SonusModular.Deathcrush
 - SonusModular.Harmony
 - SonusModular.Ladrone
 - SonusModular.Luppolo
 - SonusModular.Luppolo3
 - SonusModular.Micromacro
 - SonusModular.Multimulti
 - SonusModular.Oktagon
 - SonusModular.Osculum
 - SonusModular.Paramath
 - SonusModular.Piconoise
 - SonusModular.Pusher
 - SonusModular.Ringo
 - SonusModular.Scramblase
 - SonusModular.Twoff
 - SonusModular.Yabp
 - squinkylabs-plug1.Booty
 - squinkylabs-plug1.Vocal
 - squinkylabs-plug1.VocalFilter
 - squinkylabs-plug1.ColoredNoise
 - squinkylabs-plug1.Tremolo
 - squinkylabs-plug1.CPU_Hog
 - squinkylabs-plug1.ThreadBoost
 - SubmarineFree.AG106
 - SubmarineFree.BB120
 - SubmarineFree.FF110
 - SubmarineFree.FF120
 - SubmarineFree.FF212
 - SubmarineFree.LA108
 - SubmarineFree.LD106
 - SubmarineFree.NG112
 - SubmarineFree.OG106
 - SubmarineFree.PG112
 - SubmarineFree.PO101
 - SubmarineFree.PO102
 - SubmarineFree.PO204
 - SubmarineFree.WK101
 - SubmarineFree.WK205
 - SubmarineFree.XF101
 - SubmarineFree.XF102
 - SubmarineFree.XF104
 - SubmarineFree.XF201
 - SubmarineFree.XF202
 - SubmarineFree.XG106
 - SubmarineFree.BP101
 - SubmarineFree.BP102
 - SubmarineFree.BP104
 - SubmarineFree.BP108
 - SubmarineFree.BP110
 - SubmarineFree.BP112
 - SubmarineFree.BP116
 - SubmarineFree.BP120
 - SubmarineFree.BP124
 - SubmarineFree.BP132
 - Template.MyModule
 - trowaSoft.TrigSeq
 - trowaSoft.TrigSeq64
 - trowaSoft.VoltSeq
 - trowaSoft.OscCV
 - trowaSoft.MultiScope
 - trowaSoft.MultiOscillator
 - Valley.Topograph
 - Valley.UGraph
 - Valley.Dexter
 - Valley.Plateau
 - VultModules.Debriatus
 - VultModules.Lateralus
 - VultModules.Rescomb
 - VultModules.Splie
 - VultModules.Stabile
 - VultModules.Tangents
 - VultModules.Tohe
 - VultModules.Trummor


~bsp
Last edited by bsp804 on Sat Jul 07, 2018 5:26 am, edited 7 times in total.
Mushy Mushy
KVRAF
 
9602 posts since 6 Sep, 2008

Postby Mushy Mushy; Sat Jun 30, 2018 2:23 am Re: [announce] VCV Rack VST2 plugin

:hail:
"I was wondering if you'd like to try Magic Mushrooms"
"Oooh I dont know. Sounds a bit scary"
"It's not scary. You just lose a sense of who you are and all that sh!t"
User avatar
hivkorn
KVRAF
 
2656 posts since 6 Sep, 2007, from France

Postby hivkorn; Sat Jun 30, 2018 2:25 am Re: [announce] VCV Rack VST2 plugin

:o he do it !!!! RESPECT !! :clap:
SLiC
KVRAF
 
2629 posts since 2 Dec, 2004, from North Wales

Postby SLiC; Sat Jun 30, 2018 2:39 am Re: [announce] VCV Rack VST2 plugin

Can I be the first to say.…..

GAME CHANGER

:-)
Current Gear: i7 Win 10 + Surface, BWS, StudioOne 4, X32 Desk. Rubicon R8s, DM12, P8, Virus TI, System 1m, Korg ARP, P6, Eurorack, Elektron A4, RYTM, OT, MPC Live, OP-1, Mother 32, Dominion Club, Roland TD8 and HPD-20, Guitars, Basses and Amps
User avatar
EvilDragon
KVRAF
 
16591 posts since 6 Jan, 2009, from Croatia

Postby EvilDragon; Sat Jun 30, 2018 2:42 am Re: [announce] VCV Rack VST2 plugin

So this is without the plugin being a bridge for standalone? If so - kudos to you! I dunno why the actual developers didn't do it like that.


But I suppose you cannot extend it with further modules, since you mention modules are packed in the binaries?
Mutant
KVRAF
 
3318 posts since 9 Oct, 2004, from Poland

Postby Mutant; Sat Jun 30, 2018 3:06 am Re: [announce] VCV Rack VST2 plugin

EvilDragon wrote:So this is without the plugin being a bridge for standalone?

Yes. :)

EvilDragon wrote:But I suppose you cannot extend it with further modules, since you mention modules are packed in the binaries?

On GS he asked:
There are currently 585 modules in the "community/repos/" GIT folder.

Which ones should I port next ? What are your favourites ?
[====[\\\\\\\\]>------,

Ay caramba !
chk071
KVRAF
 
16386 posts since 10 Apr, 2010, from Germany

Postby chk071; Sat Jun 30, 2018 3:26 am Re: [announce] VCV Rack VST2 plugin

I wonder if the open source license even allows the implementation of the VST code. But, hey, not an expert on that topic. I only know that another open source plugin pulled the VST version, because the VST licensing collided with their open source license.
lalo
KVRian
 
1452 posts since 14 Oct, 2002

Postby lalo; Sat Jun 30, 2018 3:52 am Re: [announce] VCV Rack VST2 plugin

That's great!!!
Thanks.
Is the 1 sample block processing of VCV "internally" preserved or you translated the audio processing on a VST block basis?

How to integrate all the other modules?

thanks!!! :clap: :clap:
paradiddle
KVRian
 
1438 posts since 14 Aug, 2001, from montreal, canada

Postby paradiddle; Sat Jun 30, 2018 4:48 am Re: [announce] VCV Rack VST2 plugin

Someone on the vcvrack facebook group said there was a lot of latency and Andrew Belt suggested he could have a look at the source code if it was released.

https://m.facebook.com/groups/122795801 ... =bookmarks
Stuck in Aperture Laboratories for a 2nd time!
bsp804
KVRist
 
67 posts since 23 May, 2017

Postby bsp804; Sat Jun 30, 2018 5:04 am Re: [announce] VCV Rack VST2 plugin

EvilDragon wrote:So this is without the plugin being a bridge for standalone? If so - kudos to you! I dunno why the actual developers didn't do it like that.


Yes, this is not a bridge plugin, and you won't need the standalone VCV Rack executable to use this.

I guess the reason why the VCV devs have not created a VST version is that the application's architecture prevents this (it uses a lot of global+static variables, and the plugins reference some of them).
What I did was replace all these variable references with a thread-local-storage instance pointer.
As you can imagine, this required a lot of changes to the VCV Rack source code.

Due to technical limitations, it is not possible to export this TLS pointer to a dynamically loaded plugin, that's why the add-on modules have to be linked statically.

Since these add-on modules also use static variables, I had to modify them, too (+ any other changes required, e.g. replacing GCC inline assembly in the Mutable Instruments modules).
The changes required for the modules are relatively minor, though.
For example, instead of static "Model*" variables, there are now create_model_<xyz>() calls.

EvilDragon wrote:But I suppose you cannot extend it with further modules, since you mention modules are packed in the binaries?

not via dynamically loaded plugins, for the reasons stated above.

chk071 wrote:I wonder if the open source license even allows the implementation of the VST code. But, hey, not an expert on that topic. I only know that another open source plugin pulled the VST version, because the VST licensing collided with their open source license.

All the source code is placed under very liberal licenses that do not even require any changes to the source code to be published.
However, not doing so would feel plain wrong and I will talk to Andrew (the original VCV Rack author) to discuss how to proceed from here.

EDIT: sorry read that wrong. You mean there could be an issue with using Steinberg's VST SDK ? If I understood correctly, Steinberg simply does not want people to redistribute their SDK (a lot of people copied it to their GIT repos, which have now been taken down).

lalo wrote:Is the 1 sample block processing of VCV "internally" preserved or you translated the audio processing on a VST block basis?

Yes, and it would be virtually impossible to change that.
The VST calls the engine's step() method for each frame.
It's amazing what you can get away with these days ;)

paradiddle wrote:Someone on the vcvrack facebook group said there was a lot of latency and Andrew Belt suggested he could have a look at the source code if it was released.

https://m.facebook.com/groups/122795801 ... =bookmarks


I can't read that comment b/c I'm not on FB.
However, I can't think of any reason why there would be any (additional) latency (and as you can hear in the video, there is not any).
When the host calls the VST's processReplacing() function, the plugin repeatedly calls the engineStep() function to produce the required number of sample frames. Pretty straight forward.
Last edited by bsp804 on Sat Jun 30, 2018 5:23 am, edited 1 time in total.
User avatar
EvilDragon
KVRAF
 
16591 posts since 6 Jan, 2009, from Croatia

Postby EvilDragon; Sat Jun 30, 2018 5:21 am Re: [announce] VCV Rack VST2 plugin

Thanks for all the info!


I'm usually not the one to ask for this - but any thoughts about a VST3 version? VCV Rack constantly hogs the CPU regardless of any audio being output or not, with VST3 this could be shut off to preserve some CPU in silent sections, etc...


As for which modules to implement, huh, that's a good question. There's just so many great ones available... Arable, AS, Befaco, Grayscale, HetrickCV, Parable, Sonus Modular...
bsp804
KVRist
 
67 posts since 23 May, 2017

Postby bsp804; Sat Jun 30, 2018 5:42 am Re: [announce] VCV Rack VST2 plugin

EvilDragon wrote:I'm usually not the one to ask for this - but any thoughts about a VST3 version? VCV Rack constantly hogs the CPU regardless of any audio being output or not, with VST3 this could be shut off to preserve some CPU in silent sections, etc...

Idle detection is something the host can do, regardless of the plugin format.
Depending on the patch, it would have side effects, though, since the engine state would not be updated (e.g. LFOs would freeze).

I haven't looked into VST3 much and I can only guess that what you are referring to is some kind of hint that an instrument plugin can pass to the host when it knows that there are no active voices.

With a modular system, this would be rather difficult ("impossible") since it can contain feedback loops that result in engine states that cannot be produced at any given time without calculating the prior states.
You would have to analyze the module network in order to determine the actual dependencies and decide whether the engine state can be instantly calculated at "t", or if you need "t-1" for that.
VCV Rack currently does none of that -- maybe in version 1 ?

EvilDragon wrote:As for which modules to implement, huh, that's a good question. There's just so many great ones available...

It would be very helpful to know people's favourites (I for one always wanted the Mutable Instruments stuff as a VST!).
Porting all the modules in a-z order would take quite some time, so it is probably a good idea to port the most interesting ones first.
User avatar
EvilDragon
KVRAF
 
16591 posts since 6 Jan, 2009, from Croatia

Postby EvilDragon; Sat Jun 30, 2018 5:53 am Re: [announce] VCV Rack VST2 plugin

Yep, that's why I listed some that I had fun with when I was trying out VCV standalone. :)
bbtr
KVRist
 
381 posts since 21 Nov, 2005

Postby bbtr; Sat Jun 30, 2018 6:02 am Re: [announce] VCV Rack VST2 plugin

bsp804 wrote:(I for one always wanted the Mutable Instruments stuff as a VST!).


Are the parameters visible to the host - for automation, link to controller, etc? Otherwise, there's not much point in a VST vs. the Bridge.
lalo
KVRian
 
1452 posts since 14 Oct, 2002

Postby lalo; Sat Jun 30, 2018 6:34 am Re: [announce] VCV Rack VST2 plugin

EvilDragon wrote:As for which modules to implement, huh, that's a good question. There's just so many great ones available... Arable, AS, Befaco, Grayscale, HetrickCV, Parable, Sonus Modular...


I'd add Vult and Hora...I'm realizing that given the nature of this VST port all the commercial modules are not usable.
Great stuff anyway! Thanks!
Next

Moderator: Moderators (Main)

Return to Modular Synthesis