ascustomworks / as Goto Github PK
View Code? Open in Web Editor NEWVCV Rack Modules
License: Other
VCV Rack Modules
License: Other
hi Alfredo!
I noticed your update and came to look. I am sure it was not your intention, but seeing your modules takes the wind out of my sails… nice stuff!
I was intrigued by your comment about correcting the sin wave output of the "MyModule" Template plugin. I looked at both your version and the original, and I do not see a difference.
You: sine = sinf(2.0f * M_PI * (phase+1 * 0.125f))
which is just a phase shift of the original, unless you meant
sine = sinf(2.0f * M_PI * ((phase+1) * 0.125f))
which is just a frequency change.
I don't know where sine = sinf(2 * M_PI * phase)+ sinf(2 * M_PI * phase * 2)*5 came from, unless it was in a version of MyModule.cpp that has come and gone. Certainly not a pure sin wave! But it's just a sin wave plus a heavily weighted harmonic, unless it was
sine = (sinf(2 * M_PI * phase)+ sinf(2 * M_PI * phase * 2))*5
in which case again we have a sin wave and harmonic which is a pleasant sound sawfish.
As for the polarity at a glance all the functions have a range of -5 to 5 after the scaling multiplication.
BTW I found https://www.desmos.com/calculator very useful for looking at this close.y.
alto777
AS 0.6.8
Unsure about 8th and 16th notes, but in relation to Quarter notes, Bar trigger outs are bugged on certain Time Signatures. Occurs at all BPM on regular duration (40-240)
Assuming that a beat in 3/8 or 6/8 is a Dotted Quarter Note (as per how it would be Handled musically), 5/8 (for but one example) isn't outputting the beat correctly. Most X/8 Time Sigs are outputting One Beat for every Two 8ths (except for Numerators that are mults of 3, which work correctly).
Bar: X----|X----|
Beat: X--X-|X--X-|
8th: xxxxx|xxxxx|
Bar: X----|X----|
Beat: X-X-X|-X-X-|
8th: xxxxx|xxxxx|
My apologies if all of this is coming out wonky, I'd just like my stuff to actually sound vaguely prog, Like a mellower Meshuggah. https://youtu.be/bhPaY1HEjEc?t=1m42s
Can be closed. TIA.
Hi, rather than clutter up Fundamental's issues with my half-baked delay implementation, which you expressed interest in, I'll paste it here and clutter up your issues instead - feel free to delete it of course... :)
So in my module's constructor, I create an instance of the stk delayA delay line:
long maxDelay = engineGetSampleRate() * MAX_DELAY_SECS;
delay = new stk::DelayA(0.5, maxDelay);
Then the module's step method is something like:
void DelBoy::step() {
float len = /* get the delay length param value */
float sig = /* get the input value */
sig = sig / 10.0001 + 0.5;
outputs[SIGNAL_OUT].value = (delay->tick(sig) + delay->tapOut(len)) / 2.0;
}
(This is untested code, since I've edited it down a bit for simplicity. As you will be able to see, it lacks a feedback param too! But should be enough to get started with)
As for inclusion, I copied Stk.h, Stk.cpp, DelayA.h and DelayA.cpp into my plugin src/ folder and just needed #include "DelayA.h"
in my module cpp file. I think that was it. If I was intending to release, of course, I hope I'd have a less offensively naive way of amalgamating the stk dependency.. :)
EDIT: Hey, great modules, BTW, thanks a lot for those! :)
hi Alfredo!
As I get deeper into Rack, I am learning to hear errors the way I would see them. I have become obsessed with the clicking that hard edges introduce. I just happened to grab your Flow module to see if it was some hard edges on another experiment, sure enough!
But the switch was a bit slow, so poking into your code I redid it at 0.02 volts / step. Closer to ON/OFF hard, but still no clicks.
I observe that you fade at 0.001 volts / step, this would be different speeds at different sample rates - I have some fade-in/fade-out that is also steps, not time, dependent, but I will add "yet", even though I never use anything but 44100, the sample rate God intends us to use…
Anyway, I express thanks that you make your code openly available, it means a quick experiment can be done at the cost of reversing a bit of it, which in any case always teaches me something.
I am thinking that I should fade up/down all my gate signal outputs, that is take responsibility on my side for the hard edges. It isn't that hard. But almost no one does that, gates tend to be hard edged, so to speak. I wonder if you have an opinion. Frequently gates go into ADSRs and such like, where edges can be mitigated, and I certainly want to be able to have, for example, a full attack but man that clicking, now that I am aware of it, is ver annoying. Another option switch?
Also: I noted the on-off nature of Flow, fixed that for my experiment by using the OR of triggers created on the rising and falling edges of the control input. Hetrick Boolean for logic, and my own clock edge detector. Total fun.
alto777
Hi,
I found the following issue with the PhaserFX 0.6.8 in VCV:
I am not a programmer, but it seems like the second phaser shares an audio input variable with the first one, that becomes active when the depth knob is turned up.
This simple oscillator + scope patch demonstrates. Not a huge deal in isolation, but when used with other processing modules (i.e. phaser, reverb, anything with a feedback path) the offset is magnified to the point that the waveform is pushed up against 0DbFS and the sound disappears.
AS-Saw-DCOffset.zip
Hey Alfredo,
YEs , the problems I had had been having with Rack seems to stem from your VU meters.. Attached are both the patch that gave issues and the same patch without your meters.
I am sure you followed my posts in group.. oh and your tiny OSC's .. They flicker randomly not in any relation to frequency generated.
hi Alfredo!
I needed a 8 sequencer and happened to grab your variant. In the Fundamental SEQ-3 the "STEPS" knob is snappy, allowing easy selection of 1 to 8 steps, but in yours the knob is not. Is this a design choice, if so, what is the thinking?
alto777
The A-B-Y Switch module doesn't display in Ubuntu 16.04.
Hi. Having issues making sense of the mixer's resultant levels. If I inject a 1 volt signal into channel 1, the left and right outputs are 0.71V each when all mixers are at full level and the output channel is 1.41V. See pic.
If I pan hard left, the both left and right channels are affected: shuouldn't the left channel be unaffected? Also the Channel 1 output is affected by the panning too. See pic.
I can't follow the logic as to what is happening. Am I misunderstanding how this mixer works?
I also noticed that if the left channel Mix In is used without a right channel (open input) it does not get added to the mix.
Hi Antonio,
Reporting a small - not critical - issue about faders in "QuadVCA/Mixer": initial gain for all four sliders are set to 0, instead of 50% like your other mixer modules (VCA and 8-CH Mixer).
On your todo list for next release (not crucial) :-)
Bravo for your lastest Tremolo FX.
Regards.
Dominique Camus
Kill Gate is super handy, but I have to add a slew limiter most of the time to quell the hard cut off, otherwise there is an audible snap at cut-off. Is there a better way to do this? Or could a switch be added to Kill Gate to enable a soft cut off?
Thanks!
This is not a major issue, but several AS modules don't follow the industry standard visual differentiation between in and out ports. Some, like QuadVCA/Mixer, do follow the standard with a box around only the out ports, but others, like the 2, 4, and 8-channel mixers, have a box around some of the inputs as well as the outputs, which can be a little confusing.
Would be happy to dig into the SVGs and make a PR for this!
Hi,
I have a question that might be a feature request if doing so is possible without major effort:
I really like your Trigger modules. But one thing that I can't help think of when I use them is this: Why limit the trigger labels to the finite set you have defined? Is there a reason why there could not be a "custom" category that would allow a user to type in their own value for a given trigger? Obviously this would in the Real Eurorack world this would not work, but for a virtual module, such an option seems trivial. I am imagining that the ability define and customize the displayed label text might be quite helpful - especially in a live performance, or for helping to logically organize event triggers.
My question is: is there a development limitation that prevents this? or is this an aesthetic choice?
This module is in every one of my patches, but one thing I've always wondered is: Is there any particular reason why the colour dials cease to operate when the send and returns are in use? I just can't see why this would be, it's slightly frustrating having to place filters on the end of both returns every time they are used...rather than just turning the dial.
Hi!
This one took me a while to nail down what was happening. I added a Phaser FX to one of my channels prior to my mixer and everything was great. I added a second one to another channel and then it seemed I couldn't get my mix right. It turns out the second Phaser seems to create a mix as if they were stereo Phasers with a separate channel going to left and one to right, but they are independent modules.
Not knowing how it's been implemented, it seems they are not separate instances from each other. A second instance shares the inputs and outputs. Hope this makes sense. Let me know if you need me to put a sample patch together to demonstrate this.
Thanks!
Mike
P.S. I don't know how to make a feature request so I'll just ask it here. I'm often trying to figure out a way to incorporate the accents that some modules create. What seems like something that should be simple isn't, but what would be nice is if a VCA had an Accent input as well as the normal CV from an envelope generator. It could have a CV knob that lets you choose the amount of accent when it arrives. Maybe I should just be summing the output of the EG with the accent signal, but that requires another module and more patching than if a VCA had an accent input. Am I missing something simple when it comes to dealing with accents? Thanks for reading!
Was TinySine supposed to be tuned to A4 at 0V? Most other oscillators are tuned to C4
tiny vu meter test patch.zip
okay here is the smallest patch I can make that will trigger the issues . seems if I strip everything out but the mixer tinysine and the vu meters.. active or inactive the problem shows up with 6 meters and goes away like a reverb or delay back to no clicking when I drop to 5 meters in the rack.
If I change the Numerator in the Time Signature (I'm sure the denominator would trigger this as well), the Bar de-syncs from the beat until I either stop or reset the unit.
Maybe add an internal reset (not sending a trigger on the reset out) to the code when those dials get changed?
Hi,
I was doing a test of various reverbs in a patch and tried Stereo FX. But I found that the right channel output is driven harder compared to other stereo reverbs.
In this snapshot you can see that the right channel output on AUX A lasts much longer when the reverb is pushed. Is this normal?
Thanks.
Hi Alfredo,
I noticed a small potential problem with Tiggers MKI, MKII and MKIII, concerning the trigger outputs that are produced when using the momentary buttons. In Rack's standards:
https://vcvrack.com/manual/VoltageStandards.html#triggers-and-gates
triggers should last 1 millisecond, and in your modules I believe they last only one sample (at 44.1 kHz, that's only about 22.6 microseconds).
If we look at the code from MKI, we can see this since BtnTrigger.process()
returns true only on the precise sample step where a rising edge was detected, the .value = volts
will only last for that sample, and after it goes back to 0.0f
in the else
.
if (BtnTrigger.process(params[MOMENTARY_SWITCH].value)) {
resetLight = 1.0;
if (!running) {
outputs[TRIGGER_OUT].value = volts;
}
}else{
if (!running) {
outputs[TRIGGER_OUT].value = 0.0f;
}
}
If you want to see why the current method can be problematic, connect the output of MKI into the clock of a PulseMatrix, and use momentary with 10V to advance the sequencer, and it will not advance since it won't detect the output of MKI as the triggers are too short.
If you want, a simple fix would be to use PulseGenerator in Digital.hpp, as indicated by Andrew in the link above.
Thanks for considering this! Cheers :-)
Backtrace on Ubuntu 18.04:
Thread 1 "Rack" received signal SIGSEGV, Segmentation fault.
0x00007fffec46f4b1 in MsDisplayWidget::draw (this=0x555557019710, args=...) at src/DelayPlusStereo.cpp:365
365 to_display << std::right << std::setw(5) << *value;
(gdb) bt
#0 0x00007fffec46f4b1 in MsDisplayWidget::draw(rack::widget::Widget::DrawArgs const&) (this=0x555557019710, args=...) at src/DelayPlusStereo.cpp:365
#1 0x000055555578d209 in rack::widget::Widget::draw(rack::widget::Widget::DrawArgs const&) (this=this@entry=0x555556f70260, args=...) at src/widget/Widget.cpp:174
#2 0x00005555557795df in rack::app::ModuleWidget::draw(rack::widget::Widget::DrawArgs const&) (this=0x555556f70260, args=...) at src/app/ModuleWidget.cpp:259
#3 0x000055555578d209 in rack::widget::Widget::draw(rack::widget::Widget::DrawArgs const&) (this=this@entry=0x555556f701f0, args=...) at src/widget/Widget.cpp:174
#4 0x000055555578c072 in rack::widget::ZoomWidget::draw(rack::widget::Widget::DrawArgs const&) (this=0x555556f701f0, args=...) at src/widget/ZoomWidget.cpp:38
#5 0x000055555578d209 in rack::widget::Widget::draw(rack::widget::Widget::DrawArgs const&) (this=this@entry=0x555556f70140, args=...) at src/widget/Widget.cpp:174
#6 0x000055555578b6a7 in rack::widget::FramebufferWidget::drawFramebuffer() (this=0x555556f70140) at src/widget/FramebufferWidget.cpp:187
#7 0x000055555578bb48 in rack::widget::FramebufferWidget::step() (this=0x555556f70140) at src/widget/FramebufferWidget.cpp:79
#8 0x000055555578dd08 in rack::widget::Widget::step() (this=0x555556285650) at src/widget/Widget.cpp:151
#9 0x000055555578dd08 in rack::widget::Widget::step() (this=0x5555562855e0) at src/widget/Widget.cpp:151
#10 0x000055555578dd08 in rack::widget::Widget::step() (this=this@entry=0x555556282da0) at src/widget/Widget.cpp:151
#11 0x000055555574abba in rack::ui::SequentialLayout::step() (this=0x555556282da0) at src/ui/SequentialLayout.cpp:14
#12 0x000055555578dd08 in rack::widget::Widget::step() (this=this@entry=0x55555627fd40) at src/widget/Widget.cpp:151
#13 0x000055555574ab11 in rack::ui::MarginLayout::step() (this=0x55555627fd40) at src/ui/MarginLayout.cpp:10
#14 0x000055555578dd08 in rack::widget::Widget::step() (this=0x55555627fca0) at src/widget/Widget.cpp:151
#15 0x000055555578dd08 in rack::widget::Widget::step() (this=this@entry=0x555556282c90) at src/widget/Widget.cpp:151
#16 0x000055555574be16 in rack::ui::ScrollWidget::step() (this=0x555556282c90) at src/ui/ScrollWidget.cpp:36
#17 0x000055555578dd08 in rack::widget::Widget::step() (this=0x555556288310) at src/widget/Widget.cpp:151
#18 0x000055555578dd08 in rack::widget::Widget::step() (this=0x55555627f840) at src/widget/Widget.cpp:151
#19 0x000055555578dd08 in rack::widget::Widget::step() (this=this@entry=0x555555e3ed90) at src/widget/Widget.cpp:151
#20 0x000055555577f98c in rack::app::Scene::step() (this=0x555555e3ed90) at src/app/Scene.cpp:51
#21 0x000055555573ad59 in rack::Window::run() (this=0x555555e67450) at src/window.cpp:363
#22 0x00005555556b44f5 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at src/main.cpp:185
This would be nice perhaps both white and metallic black versions to match other modules. Your plugins are the best.
Doesn't display in Linux. Might be the same issue as before with the name of the SVG I think it was? Please have a look at your other modules as well to see if there are any other issues. I just bought them, but not really satisfied at the moment. Especially since they're so quiet and need more voltage.
Also, please make all the modules in the Drums output to 16V, or similar to Vult's voltage. I have to use the waveshaper plugin to increase the voltage to have any competency with Vult modules.
Other than that, they're okay so far!
Thanks.
Feature Request: add an optional JSON configuration file (ala' Rack template.vcv) for specifying an array of user-defined label text values. Reasonable constraints on the number of characters, encodings, etc. expected as appropriate for enumerated labels.
Maybe it's just me, but it would make more sense to me if the big buttons light up red when signal is flowing, rather than when it's not. Otherwise, LOVE your stuff!
The modules are great but wont load in VCV1
Hi Freddy,
love your modules, but... there is always a but... can you tell me why the CPU usage of the stereo VU meter is so high ?
(I know when I connect something to the in, it goes down a little, but still it's very high).
Even Plateau is using less and it's a CPU intensive module?
The mono ones are OK.
Greetings Peter.
The two being Mono & Stereo VU Meters.
(Hello Alfredo)
...into its SEQ16.svg resource file (title is near correct from modules menu, but 16-Step Sequencer would be... perfect!
Thanks a lot in advance.
Regards,
Dominique.
When I'm using multiple phasers they seem to create a mix between them all even if they aren't on the same channel.
1v/oct and wave shape cv inputs are switched for sawish vco
Hi Alfredo,
Comparing the module DelayPlus and the fundamental Delay, considering also what i would expect, I think that the module DelayPlus under time modulation produces incorrect waveforms, compared to the clean ones produced by the fundamental one. Moreover, judging by eyes, appears to me that at high frequency the modulation is applied less smoothly compared to the fundamental one, as it passes from one extreme to the other skipping intermediate states. Attached is a patch where the alteration of waveforms is evident.
VCV Rack 0.6.0 Windows 10, AS Modules 0.6.6
Thank you for the awesome modules!
Hi, I did a search for ADSR on your open issues and saw nothing. I hope this is not a duplicate.
The ADSR v1.0.1 does not seem to retrigger when a signal goes to the retrig input. If I play a keyboard note by note, then a gate goes to the Gate input and the ADSR works. If the note is sustained and then a retrigger comes because another note was chosen while still sustaining the previous note, the ADSR does not trigger. Instead it remains on sustain and did not restart the attack.
I hope that made sense. The summary is that it just doesn't retrigger the ADSR whn a retrigger signal is received.
Love your ADSR and Delay Plus all the time. I use other modules on a pretty regular basis.
Thanks!
Mike
Right-Clicking Rate Knobs on Delay Plus Stereo FX Does Not Set Default Timing
the mix slider of the rightmost mixer ( the last one before audio-8 module) does not work. What seems strange, is that sometimes, depending on some conditions it does work, but i don't know why. But it never works in the attached file on my machine.
Hi,
As indicated in title, the BMP Clock module having a strange behavior when I use its RST button: all sequencers behind (with correctly wired CLOCK and RESET) they restart at first step (it's the main goal), but then run very quickly while the RST button is hold (seqs run at correct speed when this button is released, however).
I have tested with VCV's Pulse Matrix 16, Autodafe's 16-Step Sequencer, cf's trSeq and... your step sequencer. Same behavior.
Hope mine explanations are clear.
Regards.
Dominique.
Speaking mostly for the sake of others, you should collect all used source licenses into the LICENSE.txt file which is distributed with the binary, so people know the licenses of the source works. Example:
### Fundamental ###
<paste Fundamental's LICENSE.txt here>
### HetrickCV ###
<paste HetrickCV's LICENSE.txt here>
...
Revision: 0af9dcb
g++ -Wsuggest-override -std=c++11 -fPIC -I../../include -I../../dep/include -DSLUG=AS -DVERSION=0.6dev -MMD -g -O3 -march=nocona -ffast-math -fno-finite-math-only -Wall -Wextra -Wno-unused-parameter -DARCH_WIN -D_USE_MATH_DEFINES -c -o build/freeverb/revmodel.cpp.o freeverb/revmodel.cpp
src/SEQ16.cpp: In member function 'virtual void SEQ16::randomize()':
src/SEQ16.cpp:136:20: error: 'random' was not declared in this scope
gateState[i] = (random() > 0.5);
^~~~~~
src/SEQ16.cpp:136:20: note: suggested alternative: 'rand'
gateState[i] = (random() > 0.5);
^~~~~~
rand
random()
needs to be randomUniform()
What would be nice is if a VCA had an Accent input as well as the normal CV from an envelope generator. It could have a CV knob that lets you choose the amount of accent when it arrives. It seems that summing the EG CV input with the Accent input is all that's needed. Of course, it may not be that simple.
Thanks for considering. I tend to use the Fundamental VCA most frequently since it's very simple in appearance and function and has graphical feedback. I use yours when I need stereo VCAs. I use your ADSR almost exclusively and Bogaudio on occasion.
Mike
Hi Alfredo,
In Multi 2x5, when the 2nd input at the top right is unconnected, it could perhaps automatically use the first input's signal, thus becoming a 1x10 Multi, and all for free :-)
Cheers!
Marc
The manifest validator found invalid tags in the plugin.json
:
Validating AS
TriLFO: invalid tags: Triple
TriggersMKI: invalid tags: Trigger
TriggersMKII: invalid tags: Trigger
TriggersMKIII: invalid tags: Trigger
SuperDriveFx: invalid tags: Overdrive
TremoloFx: invalid tags: Tremolo
TremoloStereoFx: invalid tags: Tremolo, Stereo
The list of valid tags is defined here: https://github.com/VCVRack/Rack/blob/v1/src/plugin.cpp#L534
Hello,
Love your modules thanks for all your hard work.
Issue report: MIDI toggles (0-127 on/off) require double activation on mute switches. Should be 127=on, 0=0ff
However, I can also see the advantage of the way you implemented it; this way it can be "tapped" on/off, with a MIDI note for example
I find it impractical that steps starts at zero.
When I want the counter to count 16 steps, I have to set the dial to 15.
I think this has been discussed before, but I think it would be easier to start the count at 1.
Unless there is a good reason for 0 :)
Just my thought, I use your stuff all the time, great work!
After trying to add Mono VU meter
or Stereo VU meter
to my rack I got nothing. Console is quiet.
I'm on Linux and my Rack is built from unstable master
branch (0.6).
Does it work for you? Can you hint me on how can I investigate this problem myself?
Thank you a lot for such nice modules collection!
Instead of chaining 2 or 3 Delays together for long ambient washes, is it possible to increase the max beyond 10kms?
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.