clone45 / voxglitch Goto Github PK
View Code? Open in Web Editor NEWModules for VCV Rack
License: GNU General Public License v3.0
Modules for VCV Rack
License: GNU General Public License v3.0
I love these modules, thanks ;)
One issue with Digital Sequencer; when navigating a patch using keyboard control, the hover feature interrupts movement, often introducing unwanted changed to the sequencer. Perhaps the hover keyboard controls could be activated by a click on the module first,. instead of always being active.
running win10,. .
Hello,
Thanks a lot for this new module !
2 suggestions:
a draw mode for the gate sequencer ? same as the values one, can be useful to create all step speeder?
A way to choice voltage output ? -5/5, -10/10, 0/10 or maybe better 2 range knobs ? min/max
I found a repeatable action that crashes Rack. If I click on an active Gate cell and then drag the mouse to the left without releasing the mouse button, Rack crashes when the cursor reaches the left edge of Digital Sequencer.
Hi, first thanks a lot for your great modules, Digital Sequencer is the sequencer I use the most: easy to use, very visual and lot of possibilities.
To do it really perfect I would like to have probability for each step ( like in the image?); I think it would be the only sequencer in vcv with this possibility...
Please think about it, I know it's lot of work to make (or change) module, so again thanks a lot.
All the best,
Matthieu.
When I try compiling your voxglitch plugin with GCC-11 (linux) I get the following errors:
src/Common/AudioFile.h:586:73: error: ‘numeric_limits’ is not a member of ‘std’
586 | sample = (T) sampleAsInt / static_cast<float> (std::numeric_limits<std::int32_t>::max());
...
I was able to fix it with the following:
diff --git a/src/Common/AudioFile.h b/src/Common/AudioFile.h
index 1eda1f0..766f8e3 100644
--- a/src/Common/AudioFile.h
+++ b/src/Common/AudioFile.h
@@ -31,6 +31,7 @@
#include <unordered_map>
#include <iterator>
#include <algorithm>
+#include <limits>
// disable some warnings on Windows
#if defined (_MSC_VER)
Based on the following from: https://www.gnu.org/software/gcc/gcc-11/porting_to.html
Header dependency changes
Some C++ Standard Library headers have been changed to no longer include other headers that they do need to depend on. As such, C++ programs that used standard library components without including the right headers will no longer compile.
The following headers are used less widely in libstdc++ and may need to be included explicitly when compiled with GCC 11:
• <limits> (for std::numeric_limits)
• <memory> (for std::unique_ptr, std::shared_ptr etc.)
• <utility> (for std::pair, std::tuple_size, std::index_sequence etc.)
• <thread> (for members of namespace std::this_thread.)
[voxglitch] Issues found in `plugin.json`:
autobreak: invalid module tags:
-- Valid tags are defined in https://raw.githubusercontent.com/VCVRack/Rack/v1/src/tag.cpp
Context menu should clear pattern memory and sample data.
I notice some of my code is in your repo. But you don't seem to have any acknowledgement (that I can find) of this. You might consider following the example of VCV, where they use a separate license-dist file for that stuff. That's what I do, too. Here's theirs: https://github.com/VCVRack/Rack/blob/v2/LICENSE-dist.md
Hi,
Hoping that there's a slight chance :) that you'll review the code in the near future I'd like to draw your attention to a few minor but very handy possible enhancements.
Currently:
It would make more sense to increase/decrease the value to the upper/lower value as set in the "Snap" settings. Could you please consider changing it accordingly?
On the other hand up/down keys are generally used for navigation on the VCV screen. Could you please change the quick key for Shift-Up/Down?
What about Ctrl-Shift-Up/Down to increase/decrease all the values in the relevant sequence?
Currently:
I'd like to propose the introduction of 'c' and 'Shift-c' for clearing the CV or gate sequencer. I use your great Digital Sequencer too often and I have to admit that I need to restart my tune programming countless times.
Cheers, Andras
I noticed the param knobs start out at the correct initial value but when you double click them they go to a value of 0.
Doesn't behave correctly - seems not to take into account zoom level?
On long samples (over 1 minute 30 seconsd on my machine) the WAV bank pitch control gets more and more grainy the longer the sample is played. I looked at the code and I'm not sure why this happens, but my theory is that its due to storing sample position as a float rather than a double.
Hello! Great job on your modules!
Would you be interested in developing something like this:
https://www.youtube.com/watch?v=ftDLRYnRYZQ
Please update the docs for this plugin, especially Grain Engine & Grain FX! They look good, sound great, but some explanation of these modules is sorely needed, especially knobs & CV inputs.
Thanks for this excellent plugin!
Dear Bret,
The Digital Sequencer looks clean and simple. It fits very well into any patch. But I'd like to propose an expander module that assists programming of a specific usage of the module.
The knob on the top allows you to select a step (1-32). The six buttons would allow you to modify the relevant gates (ON/OFF) of the six sequences. The six knobs would similarly allow you to set the target CV for that step/scene.
The playback is the same as now. (I'll try to create a short video to demonstrate.) It practically allows creation of upto 32 scenes. But the editing/programming part would be much simpler with this expander.
Best regards, Andras
[voxglitch] Building plugin on platform mac...src/DigitalSequencer.cpp:842:37: error: invalid suffix 'd' on floating constant
value = clamp(value, 0.0d, DRAW_AREA_HEIGHT);
^
src/DigitalSequencer.cpp:859:37: error: invalid suffix 'd' on floating constant
value = clamp(value, 0.0d, DRAW_AREA_HEIGHT);
^
2 errors generated.
make: *** [build/src/DigitalSequencer.cpp.o] Error 1
make: *** Waiting for unfinished jobs....
FAILED
Your plugin stores references to custom fonts across frames. This leads to crashes in the VST when reloading a project.
For example (but there might be others):
Readout()
{
font = APP->window->loadFont(asset::plugin(pluginInstance, "res/ShareTechMono-Regular.ttf"));
}
Please see the following link on how to resolve this issue and re-submit to the Library:
https://vcvrack.com/manual/Migrate2#2-1-Don-t-store-Font-and-Image-references-across-multiple-frames
Dear Bret,
I'm wondering if there's any way to set the pulse width of the gates sent by Hazumi? Currently I use an external module for the task...
Regards, Andras
Hi,
The module I have in mind is basically like repeater with a little bit of grain engine. It plays 2 grains, with one grain fading in as the previous fades out. If it's not too much trouble, make it stereo.
This is to a certain extent styled on the morphagene.
Thanks for the awesome tools!
I like using Hazumi to sequence drums as you can get some great rhythms out of it. What would be nice if you could control each of the column lengths using CV.
Seeing the general appreciation of the community I'd suggest you to add a 'Donate' option in the context menu of your modules. Or alternatively issue a non-free (expander or blank) module.
Not expecting you receiving a fortune but it'd be nice to have a way to show our support this way.
Regards, Andras
I see increasing interest in polyphonic modules and solutions.
Have you ever considered to reshape your great Digital Sequencer with
As title.
I recently made a song using primarily vox glitch modules and when I downloaded the most recent update for the modules many of my .wav files will no longer open. I used the .wav files in other samples in VCV and they play with no issue. Some samples will load but the majority fail to load, I have even redownloaded but still face this issue.
Hi, I'm not sure if this was a feature regression, but as you can see in the attached video, neither Reset input or Gate output are working at all. I tried both Reset modes. It's v1.25.0 and I'm running VCV 1.1.6 on Windows.
Dear Bret,
This is a (very) low priority proposal for some potentially commerical/paid expander modules. The features are already available in Digital Sequencer and Digital Sequencer XP (aka DS(XP)) anyway but there may be users thinking of financially support you or would prefer some comfort in changing the parameters.
Currently the RANGE/SNAP/S&H settings are buried into the context menu. Moving the expander modules close to DS(XP) would
Having polyphonic outputs they can also work as stand alone modules providing fixed voltages. (Similarly to BogAudio PolyCon.)
The currently used RANGE values ( 0 to 10, -10 to 10, 0 to 5, -5 to 5, etc.) are presented differently. The top columns could set the upper limit (i.e 1, 3, 5, 10) and depending the BI/UNI settings the lower limit could be mirrored (-1, -3 ,-5, -10) or simply 0. The result would be the same set of options found in DS(XP).It's just easier to work with this GUI.
I'm not sure that this proposal will make it to your development list but I thought to leave here a note anyway. I also wanted you to know that I appreciate the effort you put into your modules and I went bananas after having the chance for testing the alpha of Digital Sequencer XP. It's absolutely massive!
Best regards, Andras
DS is crashing Rack when clicking on it in the module browser
[4.885 fatal src/main.cpp:45] Fatal signal 11. Stack trace:
15: 1 Rack 0x00000001018a33cd _ZL18fatalSignalHandleri + 45
14: 2 libsystem_platform.dylib 0x00007fff6c8fe42d _sigtramp + 29
13: 3 ??? 0x0000000000000001 0x0 + 1
12: 4 Rack 0x000000010190746e _ZN4rack6widget6Widget4drawERKNS1_8DrawArgsE + 334
11: 5 Rack 0x00000001018cdfec _ZN4rack3app12ModuleWidget4drawERKNS_6widget6Widget8DrawArgsE + 92
10: 6 Rack 0x000000010190746e _ZN4rack6widget6Widget4drawERKNS1_8DrawArgsE + 334
9: 7 Rack 0x000000010190746e _ZN4rack6widget6Widget4drawERKNS1_8DrawArgsE + 334
8: 8 Rack 0x000000010190746e _ZN4rack6widget6Widget4drawERKNS1_8DrawArgsE + 334
7: 9 Rack 0x0000000101907769 _ZN4rack6widget10ZoomWidget4drawERKNS0_6Widget8DrawArgsE + 121
6: 10 Rack 0x000000010190746e _ZN4rack6widget6Widget4drawERKNS1_8DrawArgsE + 334
5: 11 Rack 0x000000010190746e _ZN4rack6widget6Widget4drawERKNS1_8DrawArgsE + 334
4: 12 Rack 0x0000000101903214 _ZN4rack2ui12ScrollWidget4drawERKNS_6widget6Widget8DrawArgsE + 52
3: 13 Rack 0x000000010190746e _ZN4rack6widget6Widget4drawERKNS1_8DrawArgsE + 334
2: 14 Rack 0x00000001018bb2f3 _ZN4rack6Window3runEv + 1395
1: 15 Rack 0x00000001018a2efa main + 1434
0: 16 Rack 0x000000010183c034 start + 52
sending negative voltage to autobreak pattern select mod port causes a segmentation fault. A guess: Likely index out of bounds.
Thread 21 received signal SIGSEGV, Segmentation fault.
[Switching to Thread 14204.0x3634]
0x00000000202de4b9 in Autobreak::process (this=0x2e528c90, args=...)
at src/autobreak.cpp:278
278 float new_step = break_patterns[selected_break_pattern][break_pattern_index];
(gdb) bt
#0 0x00000000202de4b9 in Autobreak::process (this=0x2e528c90, args=...)
at src/autobreak.cpp:278
#1 0x000000000049e3a7 in rack::engine::Engine_stepModules (threadId=0,
that=<optimized out>) at src/engine/Engine.cpp:269
#2 0x00000000004a08a5 in rack::engine::Engine_step (that=<optimized out>)
at src/engine/Engine.cpp:346
#3 rack::engine::Engine_run (that=<optimized out>)
at src/engine/Engine.cpp:448
#4 rack::engine::Engine::<lambda()>::operator() (__closure=<optimized out>)
at src/engine/Engine.cpp:482
#5 std::__invoke_impl<void, rack::engine::Engine::start()::<lambda()> > (
__f=...) at C:/msys64/mingw64/include/c++/9.2.0/bits/invoke.h:60
#6 std::__invoke<rack::engine::Engine::start()::<lambda()> > (__fn=...)
at C:/msys64/mingw64/include/c++/9.2.0/bits/invoke.h:95
#7 std::thread::_Invoker<std::tuple<rack::engine::Engine::start()::<lambda()> > >::_M_invoke<0> (this=<optimized out>)
at C:/msys64/mingw64/include/c++/9.2.0/thread:244
#8 std::thread::_Invoker<std::tuple<rack::engine::Engine::start()::<lambda()> > >::operator() (this=<optimized out>)
at C:/msys64/mingw64/include/c++/9.2.0/thread:251
#9 std::thread::_State_impl<std::thread::_Invoker<std::tuple<rack::engine::Engine::start()::<lambda()> > > >::_M_run(void) (this=<optimized out>)
at C:/msys64/mingw64/include/c++/9.2.0/thread:195
#10 0x000000006fd42441 in ?? () from C:\msys64\mingw64\bin\libstdc++-6.dll
#11 0x0000000064945092 in pthread_create_wrapper ()
from C:\msys64\mingw64\bin\libwinpthread-1.dll
#12 0x00007ff8228ab04a in msvcrt!_beginthreadex ()
from C:\WINDOWS\System32\msvcrt.dll
#13 0x00007ff8228ab11c in msvcrt!_endthreadex ()
from C:\WINDOWS\System32\msvcrt.dll
#14 0x00007ff822e77bd4 in KERNEL32!BaseThreadInitThunk ()
from C:\WINDOWS\System32\kernel32.dll
#15 0x00007ff824daced1 in ntdll!RtlUserThreadStart ()
from C:\WINDOWS\SYSTEM32\ntdll.dll
#16 0x0000000000000000 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb)
Could you pass the STEP inputs through to the GATE outputs? It isn't really outputting gates as is, more fixed length triggers.
I really like this mod but would like it more if you added a control to change direction of playback, random, pendulum, etc. Thanks for all you work.
On the first beat, and on a reset I don't get any gate signal coming out.
Here are the samples used in the patch.
Not a big deal , but just to inform you... ;-)
btw, I have compil it for Mac/mojave here, first test are great, works fine, love it !
Again a great module, thanks !
Hola Bret,
I have a problem; I did a very nice track with your Autobreak with seq included.. but now I cannot open it with the new version... I have download the old version 1.2.1 but Vcvrack says it can find Autobreak..
There is a way to use the old version?
Thank you
Eduardo
Dear Bret,
I'd like to propose a new module. The main purpose is to provide a quick kick/snare/hat box that could be thrown into the mix for rough sketching of the rhythm section.
Most of its features are based on the lovely SamplerX8. (See TRG, POS, VOL, PAN, individual out, sum out).
But there are a few differences:
I know that your hands are full with other projects (i.e. Digital Sequencer XP, Digital Programmer) now but I wanted to leave here a note. This small footstep module would be such a bless.
Best regards, Andras
[voxglitch] Building plugin on platform linux...src/GlitchSequencer.cpp: In member function 'std::tuple<bool, bool, bool, bool, bool> CellularAutomatonSequencer::step()':
src/GlitchSequencer.cpp:177:36: error: converting to 'std::tuple<bool, bool, bool, bool, bool>' from initializer list would use explicit constructor 'constexpr std::tuple< <template-parameter-1-1> >::tuple(_UElements&& ...) [with _UElements = {bool&, bool&, bool&, bool&, bool&}; <template-parameter-2-2> = void; _Elements = {bool, bool, bool, bool, bool}]'
return {t1, t2, t3, t4, t5 };
^
src/GlitchSequencer.cpp: In member function 'std::tuple<bool, bool, bool, bool, bool> CellularAutomatonSequencer::calculate_next_state()':
src/GlitchSequencer.cpp:242:9: error: converting to 'std::tuple<bool, bool, bool, bool, bool>' from initializer list would use explicit constructor 'constexpr std::tuple< <template-parameter-1-1> >::tuple(_UElements&& ...) [with _UElements = {bool&, bool&, bool&, bool&, bool&}; <template-parameter-2-2> = void; _Elements = {bool, bool, bool, bool, bool}]'
};
^
make: *** [build/src/GlitchSequencer.cpp.o] Error 1
make: *** Waiting for unfinished jobs....
FAILED
Hi! When building voxglitch as part of cardinal, I have run into a build error due to unsafe use of format strings.
In file included from ../src/Rack/include/common.hpp:269,
from ../include/common.hpp:31,
from ../src/Rack/include/rack.hpp:22,
from ../include/rack.hpp:20,
from voxglitch/src/plugin.hpp:2,
from voxglitch/src/GrainFx.cpp:7:
voxglitch/src/Common/common.hpp: In member function ‘void Common::DEBUG_FLOAT(float)’:
../src/Rack/include/logger.hpp:13:45: error: format not a string literal and no format arguments [-Werror=format-security]
13 | #define DEBUG(format, ...) rack::logger::log(rack::logger::DEBUG_LEVEL, __FILE__, __LINE__, __FUNCTION__, format, ##__VA_ARGS__)
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
voxglitch/src/Common/common.hpp:25:7: note: in expansion of macro ‘DEBUG’
25 | DEBUG(std::to_string(value).c_str());
| ^~~~~
In file included from ../src/Rack/include/common.hpp:269,
from ../include/common.hpp:31,
from ../src/Rack/include/rack.hpp:22,
from ../include/rack.hpp:20,
from voxglitch/src/plugin.hpp:2,
from voxglitch/src/GrainEngineMK2.cpp:8:
voxglitch/src/Common/common.hpp: In member function ‘void Common::DEBUG_FLOAT(float)’:
../src/Rack/include/logger.hpp:13:45: error: format not a string literal and no format arguments [-Werror=format-security]
13 | #define DEBUG(format, ...) rack::logger::log(rack::logger::DEBUG_LEVEL, __FILE__, __LINE__, __FUNCTION__, format, ##__VA_ARGS__)
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
voxglitch/src/Common/common.hpp:25:7: note: in expansion of macro ‘DEBUG’
25 | DEBUG(std::to_string(value).c_str());
| ^~~~~
In file included from ../src/Rack/include/common.hpp:269,
from ../include/common.hpp:31,
from ../src/Rack/include/rack.hpp:22,
from ../include/rack.hpp:20,
from voxglitch/src/plugin.hpp:2,
from voxglitch/src/GrainEngineMK2Expander.cpp:6:
voxglitch/src/Common/common.hpp: In member function ‘void Common::DEBUG_FLOAT(float)’:
../src/Rack/include/logger.hpp:13:45: error: format not a string literal and no format arguments [-Werror=format-security]
13 | #define DEBUG(format, ...) rack::logger::log(rack::logger::DEBUG_LEVEL, __FILE__, __LINE__, __FUNCTION__, format, ##__VA_ARGS__)
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
voxglitch/src/Common/common.hpp:25:7: note: in expansion of macro ‘DEBUG’
25 | DEBUG(std::to_string(value).c_str());
| ^~~~~
It would be nice to have a way to easily mute individual samples from going to the main output. You normally don't want the sound to go to the main stereo outs if you are using the channels direct output.
[voxglitch] Issues found in `plugin.json`:
Version needs update! Current version: 1.12.0
Rack 1.1.6
Voxglitch 1.6.0
Windows 10
I grabbed a random group of sounds from my library and put them in a folder. The total size of the folder was 246MB. Varying file sizes from 731KB to 34MB.
Upon identifying the folder from WAV BANK's context menu, I get the spinny wheel for about five seconds and then Rack barfs.
Once I deleted the largest files from the folder, WAV BANK appeared to successfully load them, but then several seconds later, Rack crashed again. Total folder size this time: 58MB
Fedora 23 Linux
VCV Rack v1.dev
After the latest pull:
[0.235 warn src/plugin.cpp:158] Could not load plugin ./plugins/voxglitch: Manifest contains module wavbank but it is not defined in the plugin
Thought you'd want to know. :) Great plugin, btw.
I'm aware of this and will hopefully provide a fix soon!
Dear Bret,
I secretly hope that you'll be able to dedicate some time to your old modules as V2 is approaching. Could you please modify the code that by pressing the active SEQ button it displays a read-only STAT screen instead of the CV columns? Something like that:
SEQ#1 STEPS: 16 S&H: ON SNAP: 12 RANGE: 0 to 10
SEQ#2 STEPS: 32 S&H: ON SNAP: 16 RANGE: -10 to 10
SEQ#3 STEPS: 16 S&H: OFF SNAP: 12 RANGE: 0 to 1
SEQ#4 STEPS: 8 S&H: ON SNAP: 8 RANGE: 0 to 10
SEQ#5 STEPS: 7 S&H: ON SNAP: 32 RANGE: -5 to 5
SEQ#6 STEPS: 16 S&H: OFF SNAP: 8 RANGE: 0 to 10
As simple as it looks it's not a fun change as you need to modify the UI. But this overview would be so useful opening older tunes and probably it'd also provide a neutral outlook for the playback/performance.
Regards, Andras
Getting an extra step when you have a gate and a reset at the start of your sequence.
Seems like it's more likely to happen when you have more than one sequencer hooked up to the same reset button.
Bret, I gather life has taken you away from VCV Rack module coding ... but should you ever get back to it, would you please add an option in the Hazumi module's right-click menu to set all of the column's trigger locations to top, bottom or both? Having to set each one individually is a bit tedious. By the way, https://paulpomeroy.bandcamp.com/track/harmony wouldn't have been created without this module, so thank you for that. (See https://patchstorage.com/pendupenta/ for how it was used.)
Greetings ! I'm on Ububtu 18.05 with GCC 7.5.0. The latest commit will failed with this error:
g++ -std=c++11 -Wsuggest-override -fPIC -I../../include -I../../dep/include -MMD -MP -g -O3 -march=athlon-fx -funsafe-math-optimizations -Wall -Wextra -Wno-unused-parameter -DARCH_LIN -c -o build/src/GrainEngineMK2Expander.cpp.o src/GrainEngineMK2Expander.cpp
In file included from src/GrainEngineMK2Expander.cpp:13:0:
src/GrainEngineMK2Expander/GrainEngineMK2Expander.hpp:1:10: fatal error: filesystem: No such file or directory
#include <filesystem>
^~~~~~~~~~~~
compilation terminated.
The solution for pre-8.x GCC is:
#include <experimental/filesystem>
That works for me. You might want to add an #ifdef regarding the GCC version.
Best,
dp
If a .wav file does not have a BPM of 120 it will not set to the correct pitch when loaded. For example:
Load a .wav with a tempo of 98 bpm, 120 BPM will pitch the loop up, however setting the BPM to 98 will pitch the loop down. If a loop has a bpm which is outside the range of the string value it could be impossible to pitch to the loops correct pitch.
Suggestion:
Have an Offset for the string value, so setting this offsets will change the string only. As most .wav files may contain the BPM in the string. Where the .wav does not contain the BPM value in the file name it can be calculated by counting the beats and sending the EOC to a module with BPM detection.
or
Auto detection might be another way, have a button to disable the bpm until the End Of Cycle, if number of bars is known for a loop this could update the BPM, but you would have to manually set the bars this way. Perhaps a context menu "Number of bars >" and a drop down menu.
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.