sjaehn / boops Goto Github PK
View Code? Open in Web Editor NEWSound glitch effect sequencer LV2 plugin
License: GNU General Public License v3.0
Sound glitch effect sequencer LV2 plugin
License: GNU General Public License v3.0
Using Ardour 6.9 official build. BOops 1.8.2.
It does not matter if is playing or paused.
How to reproduce:
Create a new Ardour session. Add a Audio track. Put Boops in this track. Ad a reverb, remove, and crash.
Asked by sahaathyva
Crash with jalv.gtk3 (1.6.4). Happens sometimes, not very often. gdb jalv.gtk3 core
output:
#0 BOopsGUI::port_event(unsigned int, unsigned int, unsigned int, void const*)
(this=
0x5569cd7c3430, port=1065353216, buffer_size=0, format=0, buffer=0x5569ce69aaf0) at ../../src/BOopsGUI.cpp:694
#1 0x00007f43d8d375a0 in port_event(LV2UI_Handle, uint32_t, uint32_t, uint32_t, void const*)
(ui=0x5569cd7c3430, port_index=1065353216, buffer_size=0, format=0, buffer=0x5569ce69aaf0) at ../../src/BOopsGUI.cpp:2766
#2 0x00005569cbab7790 in ()
#3 0x00005569cbaaf4f8 in ()
#4 0x00007f43e31fca08 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5 0x00007f43e31fbe6e in g_main_context_dispatch ()
at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#6 0x00007f43e31fc220 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#7 0x00007f43e31fc513 in g_main_loop_run ()
at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#8 0x00007f43e368637d in gtk_main () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#9 0x00005569cbab7bd7 in ()
#10 0x00005569cbaad768 in ()
#11 0x00007f43e2fdf0b3 in __libc_start_main (main=
0x5569cbaad690, argc=2, argv=0x7ffe6021e6d8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffe6021e6c8)
at ../csu/libc-start.c:308
--Type <RET> for more, q to quit, c to continue without paging--
#12 0x00005569cbaad7ce in ()
Very interesting point: port_index = 1065353216
(= 0x3f800000 = 1.0f). Whereas buffer_size = 0
.
The project started as "B.Glitchr". Some other suggestions:
What do you prefer? Any other ideas?
idk how to explain this, but in the linked ardour project, i have a drum loop with b.oops on it with a stutter effect set to note mode and i have a midi track sending midi data to the plugin. when you set the drum break on a loop, i noticed that every time the stutter effect starts, it sounds different each time, like it's taking a different portion of the audio each time. it also sounds different if you move the notes around and put them back in the same place
i guess i'll just let you see for yourself (the drum loop is in the archive folder)
note: if there's already a way to do this, please tell me!
anyways, it would be nice if you could directly trigger individual effects via midi without having to use patterns. i find that using the patterns is a bit finicky, and i'd love to be able to create complex effect sequences in my daw without having to program every bar or whatever individually (and there are only sixteen of them anyway, so)
I build Boops on Fedora 32.
I met the following error message:
Build BOops.lv2 DSP...src/BOops.cpp: In member function 'LV2_State_Status BOops::state_save(LV2_State_Store_Function, LV2_State_Handle, uint32_t, const LV2_Feature* const*)':
src/BOops.cpp:1176:3: error: 'LV2_State_Free_Path' was not declared in this scope; did you mean 'LV2_State_Make_Path'?
1176 | LV2_State_Free_Path* freePath = NULL;
| ^~~~~~~~~~~~~~~~~~~
| LV2_State_Make_Path
src/BOops.cpp:1176:24: error: 'freePath' was not declared in this scope
1176 | LV2_State_Free_Path* freePath = NULL;
| ^~~~~~~~
src/BOops.cpp:1181:4: error: 'LV2_STATE__freePath' was not declared in this scope; did you mean 'LV2_STATE__makePath'?
1181 | LV2_STATE__freePath, &freePath, false,
| ^~~~~~~~~~~~~~~~~~~
| LV2_STATE__makePath
src/BOops.cpp: In member function 'LV2_State_Status BOops::state_restore(LV2_State_Retrieve_Function, LV2_State_Handle, uint32_t, const LV2_Feature* const*)':
src/BOops.cpp:1306:2: error: 'LV2_State_Free_Path' was not declared in this scope; did you mean 'LV2_State_Make_Path'?
1306 | LV2_State_Free_Path* freePath = nullptr;
| ^~~~~~~~~~~~~~~~~~~
| LV2_State_Make_Path
src/BOops.cpp:1306:23: error: 'freePath' was not declared in this scope
1306 | LV2_State_Free_Path* freePath = nullptr;
| ^~~~~~~~
src/BOops.cpp:1311:3: error: 'LV2_STATE__freePath' was not declared in this scope; did you mean 'LV2_STATE__makePath'?
1311 | LV2_STATE__freePath, &freePath, false,
| ^~~~~~~~~~~~~~~~~~~
| LV2_STATE__makePath
In file included from src/Slot.hpp:26,
from src/Slot.cpp:22:
src/Stereo.hpp: In member function 'virtual Stereo FxRingModulator::play(double, double, double)':
src/Stereo.hpp:79:8: warning: 'f' may be used uninitialized in this function [-Wmaybe-uninitialized]
79 | left *= rhs;
| ~~~~~^~~~~~
In file included from src/Slot.cpp:48:
src/FxRingModulator.hpp:61:9: note: 'f' was declared here
61 | float f;
| ^
Hi
Trying to build 1.2.6 on Ubuntu 20.04.
Dependencies are installed but when attempting to MAKE I get
Build BOops.lv2 DSP...src/BOops.cpp: In member function ‘LV2_State_Status BOops::state_save(LV2_State_Store_Function, LV2_State_Handle, uint32_t, const LV2_Feature* const*)’:
src/BOops.cpp:1176:3: error: ‘LV2_State_Free_Path’ was not declared in this scope; did you mean ‘LV2_State_Make_Path’?
1176 | LV2_State_Free_Path* freePath = NULL;
| ^~~~~~~~~~~~~~~~~~~
| LV2_State_Make_Path
src/BOops.cpp:1176:24: error: ‘freePath’ was not declared in this scope
1176 | LV2_State_Free_Path* freePath = NULL;
| ^~~~~~~~
src/BOops.cpp:1181:4: error: ‘LV2_STATE__freePath’ was not declared in this scope; did you mean ‘LV2_STATE__makePath’?
1181 | LV2_STATE__freePath, &freePath, false,
| ^~~~~~~~~~~~~~~~~~~
| LV2_STATE__makePath
src/BOops.cpp: In member function ‘LV2_State_Status BOops::state_restore(LV2_State_Retrieve_Function, LV2_State_Handle, uint32_t, const LV2_Feature* const*)’:
src/BOops.cpp:1306:2: error: ‘LV2_State_Free_Path’ was not declared in this scope; did you mean ‘LV2_State_Make_Path’?
1306 | LV2_State_Free_Path* freePath = nullptr;
| ^~~~~~~~~~~~~~~~~~~
| LV2_State_Make_Path
src/BOops.cpp:1306:23: error: ‘freePath’ was not declared in this scope
1306 | LV2_State_Free_Path* freePath = nullptr;
| ^~~~~~~~
src/BOops.cpp:1311:3: error: ‘LV2_STATE__freePath’ was not declared in this scope; did you mean ‘LV2_STATE__makePath’?
1311 | LV2_STATE__freePath, &freePath, false,
| ^~~~~~~~~~~~~~~~~~~
| LV2_STATE__makePath
make: *** [makefile:128: BOops.so] Error 1
cheers
When I use the B.Oops in a Ardour MIDI track everything works fine, the host-controlled option get the BPM and the Transport commands from the host. But when I put it in a Audio track B.Oops gets a unknown BPM and keeps running all the time, with no sync. When using the Autoplay mode I can adjust the correct BPM, but this stays out of sync.
In the video, the left instance is in a MIDI track, and it is in correct bpm and sync. The right window are in a vocal track and not in sync.
Hi,
When BOops loaded via https://github.com/x42/lv2vst then selecting Oops effect throws an error:
Creating VST instance: lv2vst
Initialising VST: lv2vst (1.0.0.0)
Opening VST UI: B.Oops
terminate called after throwing an instance of 'std::invalid_argument'
what(): Can't open /usr/lib64/lv2/BOops.lv2inc/oops44100.wav.
it can be fixed by simple changing https://github.com/sjaehn/BOops/blob/master/src/FxOops.hpp#L50
to
strcat (samplepath, "/inc/oops44100.wav");
but there is no such error in other native LV2 hosts, such jalv.gtk or Carla.
hi, i'm trying to trigger effects using midi, and i'm doing this by making patterns with only one effect and triggering those, but i seem to have run into a bug. whenever i trigger one effect, it works as expected, but when i trigger the next, the first effect seems to play along with the second one? whenever i play on my keyboard, the first effect seems to go away after it gets triggered once, but it always happens along with the second effect whenever i sequence it
feel free to ask for elaboration, i'm not good at explaining things
Request by @unfa for multiple patterns which can be selected via tabs. And controlled by MIDI. As in B.Jumblr.
I manually compiled 1.8.2 on Ubuntu 22.04 and I'm using the plugin in Ardour and Carla. When the playback mode is set to Autoplay the bpm and bpBar options become visible. However, when dragging the slider beyond a certain point the text on the slider becomes almost illegible.
The grey text on black background makes it really hard to read.
First of all thanks for the lovely plugin and the integration of AW effects.
It would be very helpful to be able to automate a global bypass parameter in the DAWs, e.g. Ardour. Thanks.
Hi the Reaper developers have recently added LV2 support into their core and I'm delighted to say that they are working on getting your plugins working 100%.
There seems to be a problem ( I'm not speaking on their behalf ) with running B.Oops on a normal track, I.e there is no audio effected ( the GUI updates the changes tho ) , but somehow it works as expected when inserted on the master track as an effect.
B.Choppr also has the same behaviour, where all your other plugins work correctly on any track.
I was hoping you could maybe give me some info on what could cause such an issue.
thanks :)
Build BOops.lv2 DSP...Build BOops.lv2 GUI...In file included from ../../src/BOopsGUI.cpp:22:
In file included from ../../src/BOopsGUI.hpp:45:
In file included from ../../src/PadSurface.hpp:26:
../../src/BWidgets/Text.hpp:119:15: warning: 'setWidth' overrides a member function but is not marked 'override' [-Winconsistent-missing-override]
virtual void setWidth (const double width);
^
../../src/BWidgets/Widget.hpp:212:15: note: overridden virtual function is here
virtual void setWidth (const double width);
^
In file included from src/Slot.cpp:41:
src/FxDistortion.hpp:104:7: warning: absolute value function 'fabsf' given an argument of type 'double' but has parameter of type 'float' which may cause truncation of value
[-Wabsolute-value]
fabsf (r) < (2.0/3.0) ?
^
src/FxDistortion.hpp:104:7: note: use function 'std::abs' instead
fabsf (r) < (2.0/3.0) ?
^~~~~
std::abs
src/Slot.cpp:77:11: warning: address of array 'that.params' will always evaluate to 'true' [-Wpointer-bool-conversion]
if (that.params) std::copy (that.params, that.params + NR_PARAMS, params);
~~ ~~~~~^~~~~~
src/Slot.cpp:78:11: warning: address of array 'that.pads' will always evaluate to 'true' [-Wpointer-bool-conversion]
if (that.pads) std::copy (that.pads, that.pads + NR_STEPS, pads);
~~ ~~~~~^~~~
src/Slot.cpp:79:11: warning: address of array 'that.startPos' will always evaluate to 'true' [-Wpointer-bool-conversion]
if (that.startPos) std::copy (that.startPos, that.startPos + NR_STEPS, startPos);
~~ ~~~~~^~~~~~~~
src/Slot.cpp:97:11: warning: address of array 'that.params' will always evaluate to 'true' [-Wpointer-bool-conversion]
if (that.params) std::copy (that.params, that.params + NR_PARAMS, params);
~~ ~~~~~^~~~~~
src/Slot.cpp:98:11: warning: address of array 'that.pads' will always evaluate to 'true' [-Wpointer-bool-conversion]
if (that.pads) std::copy (that.pads, that.pads + NR_STEPS, pads);
~~ ~~~~~^~~~
src/Slot.cpp:99:11: warning: address of array 'that.startPos' will always evaluate to 'true' [-Wpointer-bool-conversion]
if (that.startPos) std::copy (that.startPos, that.startPos + NR_STEPS, startPos);
~~ ~~~~~^~~~~~~~
src/Slot.cpp:221:30: warning: address of array 'this->params' will always evaluate to 'true' [-Wpointer-bool-conversion]
if ((!fx) || (!buffer) || (!params)) return Stereo();
~^~~~~~
8 warnings generated.
done.
1 warning generated.
In file included from ../../src/ShapeWidget.cpp:21:
In file included from ../../src/ShapeWidget.hpp:28:
../../src/BWidgets/Text.hpp:119:15: warning: 'setWidth' overrides a member function but is not marked 'override' [-Winconsistent-missing-override]
virtual void setWidth (const double width);
^
../../src/BWidgets/Widget.hpp:212:15: note: overridden virtual function is here
virtual void setWidth (const double width);
^
1 warning generated.
In file included from ../../src/BWidgets/MessageBox.cpp:18:
In file included from ../../src/BWidgets/MessageBox.hpp:22:
../../src/BWidgets/Text.hpp:119:15: warning: 'setWidth' overrides a member function but is not marked 'override' [-Winconsistent-missing-override]
virtual void setWidth (const double width);
^
../../src/BWidgets/Widget.hpp:212:15: note: overridden virtual function is here
virtual void setWidth (const double width);
^
1 warning generated.
In file included from ../../src/BWidgets/Text.cpp:18:
../../src/BWidgets/Text.hpp:119:15: warning: 'setWidth' overrides a member function but is not marked 'override' [-Winconsistent-missing-override]
virtual void setWidth (const double width);
^
../../src/BWidgets/Widget.hpp:212:15: note: overridden virtual function is here
virtual void setWidth (const double width);
^
1 warning generated.
The port is available.
To install on FreeBSD:
$ sudo pkg install boops-lv2
Thank you,
Yuri
Steps to reproduce:
Select notes for each effect (I used C1-F1)
Put your computer to sleep, close the session, or do something that causes the RAM to flush
B.Oops had an oopsie and now is defaulted to curve selection rather than note selection for the effects.
Request by @unfa .
Can a bypass option be added to this plugin?
The rationale behind this is request:
I use B.Oops in live performances. I have a glitch effects stack/preset already set up and I want to enable it whenever I press a button on a midi controller. Currently this isn't possible as there's no bypass option
I have a several effects and patterns setup for a live performance and I'd like to be able to randomise it using a midi controller.
I looked through the plugin's parameters in Carla and it looks like this option isn't exposed to be controlled via midi and it seems this can only be done via the gui using the dice button.
Can this option be added?
As always, I think I have been pressing you to think about porting your plugins to VST format [ most likely VST3 with License issues etc now ] .
I think you could be rewarded financially by doing so.
As you already know most native Linux DAWS don't/won't support LV2 and bridging adds some CPU overhead.
I believe you could really make the difference to people converting to Linux Audio as a serious and better OS for creating Audio media.
An example of your work so far... I waited for years until Illformed released a native Linux version of their Glitch plugin, then you basically release BOops overnight 👍
Anyway , please keep this issue open for other Linux musicians to comment and thanks for all your hard work!
Request by @unfa .
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.