paul-dempsey / pachde1 Goto Github PK
View Code? Open in Web Editor NEWVCV Rack modules
License: Other
VCV Rack modules
License: Other
https://community.vcvrack.com/t/poll-which-improvements-would-you-like-to-see-most-in-vcv/19785/77
Hi!
If Rack is closed when Imagine is playing and then reopened the Imagine "Play" tooltip reports "playing"; yet the cursor doesn't move. If the Play button is clicked, the cursor starts moving and voltages change; but the tooltip reports "Paused"; also, it would be really swell if the module actually started playing on reopen if that was its last state before Rack was closed.
Thanks :)
While playing, I've found that it can be musically interesting to modulate speed and threshold, usually by very small amounts. So, it could be good to have CV on these with built-in attenuators. There isn't much room on the panel and still retain labels, so this could go into the prototyped large version.
For the browser and Rack library, showing an image in the preview would better convey it's mission.
Some fonts have horrible filenames and the real font name is embedded in the font file. Since we want to display the name in the UI (in the right click menu for the Info module, for example), we should retrieve the actual font name from the file.
To do that we must decode the file format, which is fortunately publicly documented:
Need to:
We are now running static analysis tools CodeQL and cppcheck during the integration process and the following issues were found:
Running cppcheck analysis...
src/colors.hpp:97:44: error: Signed integer overflow for expression '255<<24'. [integerOverflow]
return r | (g << 8) | (b << 16) | (255 << 24);
^
src/text.cpp:22:28: error: va_list 'args' was opened but not closed by va_end(). [va_end_missing]
return r < 0 ? "??" : s;
^
Please take look and see if these need to be adressed.
Make sure to include factory presets for all the config required (chroma color(s), screw-less, logo-less, title-less).
Sparkette:
Would it be possible to support polyphonic inputs for X and Y, and then have RGB return polyphonic outputs? Like for multiple read cursors
Then it would work with my RGB Matrix in polyphonic mode without having something in the middle (I typically use RAM-40964)
pachde:
Neat idea. That would require multiple read heads, which I considered, but it complicates the UI (which channel does it affect when you click/drag the image? channel 0, all channels?). Depending on the number of channels/heads, it would get computationally expensive -- Imagine already takes way more CPU than I'd like it to. I've made some attempts at SIMD, but my attempts only made it slower.
nanovg provides nvgHSL* functions, but doesn't provide functions to extract the same h, s, or l from an NVGcolor.
I've written some basic functions that have been workable for the purposes of imagine, but it's a real problem for Copper, and I disabled hex editing.
To fix this the options are:
Added Imagine module to empty rack. Immediatly close app.
Thread 1 received signal SIGSEGV, Segmentation fault.
nvgDeleteImage (ctx=0x0, image=5) at dep/nanovg/src/nanovg.c:890
890 ctx->params.renderDeleteTexture(ctx->params.userPtr, image);
(gdb) bt
#0 nvgDeleteImage (ctx=0x0, image=5) at dep/nanovg/src/nanovg.c:890
#1 0x00007fffc5783b51 in pachde::cachePic::clearImageCache (vg=<optimized out>, this=0x78dc608) at src/Imagine/../pic.hpp:143
#2 pachde::cachePic::onContextDestroy (e=..., this=0x78dc608) at src/Imagine/../pic.hpp:120
#3 pachde::PicWidget::onContextDestroy (this=0x78dc5b0, e=...) at src/Imagine/pic_widget.hpp:43
#4 0x00007fffc577e691 in rack::widget::Widget::recurseEvent<void (rack::widget::Widget::*)(rack::widget::Widget::ContextDestroyEvent const&), rack::widget::Widget::Co
ntextDestroyEvent> (e=..., f=&virtual table offset 328, this=0x78dc0d0) at ../../include/widget/Widget.hpp:187
#5 rack::widget::Widget::onContextDestroy (this=0x78dc0d0, e=...) at ../../include/widget/Widget.hpp:515
#6 0x00007fffda604e31 in rack::widget::Widget::recurseEvent<void (rack::widget::Widget::*)(rack::widget::Widget::ContextDestroyEvent const&), rack::widget::Widget::Co
ntextDestroyEvent> (e=..., f=&virtual table offset 328, this=0x980900) at include/widget/Widget.hpp:187
#7 rack::widget::Widget::onContextDestroy (this=0x980900, e=...) at include/widget/Widget.hpp:515
#8 0x00007fffda604e31 in rack::widget::Widget::recurseEvent<void (rack::widget::Widget::*)(rack::widget::Widget::ContextDestroyEvent const&), rack::widget::Widget::Co
ntextDestroyEvent> (e=..., f=&virtual table offset 328, this=0x74aa270) at include/widget/Widget.hpp:187
#9 rack::widget::Widget::onContextDestroy (this=0x74aa270, e=...) at include/widget/Widget.hpp:515
#10 0x00007fffda604e31 in rack::widget::Widget::recurseEvent<void (rack::widget::Widget::*)(rack::widget::Widget::ContextDestroyEvent const&), rack::widget::Widget::Co
ntextDestroyEvent> (e=..., f=&virtual table offset 328, this=0x74aa1f0) at include/widget/Widget.hpp:187
#11 rack::widget::Widget::onContextDestroy (this=0x74aa1f0, e=...) at include/widget/Widget.hpp:515
#12 0x00007fffda604e31 in rack::widget::Widget::recurseEvent<void (rack::widget::Widget::*)(rack::widget::Widget::ContextDestroyEvent const&), rack::widget::Widget::Co
ntextDestroyEvent> (e=..., f=&virtual table offset 328, this=0x74aa050) at include/widget/Widget.hpp:187
#13 rack::widget::Widget::onContextDestroy (this=0x74aa050, e=...) at include/widget/Widget.hpp:515
#14 0x00007fffda604e31 in rack::widget::Widget::recurseEvent<void (rack::widget::Widget::*)(rack::widget::Widget::ContextDestroyEvent const&), rack::widget::Widget::Co
ntextDestroyEvent> (e=..., f=&virtual table offset 328, this=0x74a9f80) at include/widget/Widget.hpp:187
#15 rack::widget::Widget::onContextDestroy (this=0x74a9f80, e=...) at include/widget/Widget.hpp:515
#16 0x00007fffda1bb0db in rack::widget::Widget::recurseEvent<void (rack::widget::Widget::*)(rack::widget::Widget::ContextDestroyEvent const&), rack::widget::Widget::Co
ntextDestroyEvent> (e=..., f=&virtual table offset 328, this=0x74a9ed0) at include/widget/Widget.hpp:187
#17 rack::widget::Widget::onContextDestroy (e=..., this=0x74a9ed0) at include/widget/Widget.hpp:515
#18 rack::window::Window::~Window (this=this@entry=0x6f6a7d0, __in_chrg=<optimized out>) at src/window/Window.cpp:369
#19 0x00007fffda136780 in rack::Context::~Context (this=0x7363ba0, __in_chrg=<optimized out>) at src/context.cpp:19
#20 0x00007ff74e20112e in main (argc=<optimized out>, argv=<optimized out>) at adapters/standalone.cpp:279
A possible issue with the gate output of your imagine module :
When loading a b&w image in your module and setting the mode to “vinyl”, I expected the gate output to always be 0v whenever the read head would be above the color black. But if you look between the 0:09 and 0:14 mark in this video (https://youtu.be/inIrWf5oIa8), sometimes the read head over black will output a constant 10v value instead.
If you could consider adding this more traditional behavior as an option for how the gate output work, it would be greatly appreciated.
Thanks,
Loops
src/Info/Info.cpp:142:17: error: use of undeclared identifier 'isnanf'; did you mean 'isnan'?
if (isnanf(font_size)) {
^~~~~~
isnan
/home/build/rack-plugin-toolchain/local/osxcross/bin/../SDK/MacOSX11.1.sdk/usr/include/c++/v1/math.h:535:1: note: 'isnan' declared here
isnan(float __lcpp_x) _NOEXCEPT { return __libcpp_isnan(__lcpp_x); }
^
It should be possible to use Copper as an extension module to edit the panel colors for Null and Info.
Think of the Null module glowing the dark, pulsing with it's direct input, changing color based on modulating Copper.
Might be a good way to learn how to do extension modules.
Per discussion on the forums on Color interchange.
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.