Questionable Modules

Hello all,

With the release of 2.1.7 coming, its about time to create an announcement thread for my collection of modules :slight_smile:

Questionable Modules is a collection of my weird module ideas, I have currently made a sequencer, oscillator, and some randomization utilities. Their description and usage are linked below.

Hope you find use in these :smiley:

Example patch:

Source: https://github.com/isivisi/questionablemodules

VCV Library: https://library.vcvrack.com/questionablemodules

Modules and their documentation:

14 Likes

Thanks for your modules. I just wanted to have a look at it. There is no labeling of the inputs and outputs. Is this intentional?

1 Like

You can toggle the labels for the modules by selecting “Toggle Descriptors” in the context menu. This feature will be available when 2.1.7 gets pushed to the library. You can manually download 2.1.7 here in the meantime

2 Likes

Very cool looking, and I love the demo! The circular oscilloscope looking display on the Slurp oscillator is really fun. Sounds great! Love it.

From a marketing point of view, if someone posts a video using your modules (like you did above), and a viewer got interested in them and tried to find your plugin, they might be a thrown off by seeing “ISI” at the bottom, while the brand name is really “Questionable Modules”.

Here I am on the VCV Rack Library, looking for “ISI” brand name. Where is it? I can’t find it!

This is the kind of confusion that can reduce the download rate of a plugin, even if it is functionally wonderful. Ideally you would put “Questionable Modules” somewhere on the panel, but of course that’s rather large to fit. You might want to consider something like “QM” or “?M” or something at least tangentially indicative of your brand name.

3 Likes

Obviously SLURP is pretty cryptic. It sounds good, but the lack of labels, and the weird nature of the beast make if difficult to figure out. Are the three V/OCT inputs really independent? If they were normalled so you could use it as a regular VCO is would help.

The panel layout does not make it clear at all which inputs go with which knobs. That and not having labels makes it really difficult to figure out. The controls and knobs are much more dense than you commonly see in a VCV module. Maybe the module wants to be wider, or the cool display could be sacrificed?

Also it is monophonic, which is getting less and less common in VCV oscillators.

It is also very heavy on the CPU - its it possible to make it more efficient?

The inclusion of presets is a good idea.

Anyway, an interesting sounding module, but it probably won’t be very popular in the present form.

Also, I was unable to build the module, and I don’t think there are any instructions in the README. I figure you probably need to do the deps thing like you do with VCV, but I get a semi scary error when I try that:

$ git submodule update --init --recursive
Cloning into '/d/Rack/plugins/questionablemodules/src/gmtl'...
The authenticity of host 'github.com (192.30.255.113)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Thanks for the input!

I do have some small optimizations in mind for SLURP, just haven’t gotten around to it yet.

Also, that error is probably because you haven’t setup your ssh keys with github. I have a git submodule that uses ssh instead of https:

[submodule "src/gmtl"]
	path = src/gmtl
	url = git@github.com:imvu/gmtl.git

Sorry about that, its part of my workflow.

But once you’re able to gather the required files it uses the standard method of building rack plugins.

cool. It’s very, very unusual for VCV modules to use SSH. I understand it’s your workflow but it’s not the workflow of 99.99 percent of your “customers”.

1 Like

If it helps I do a bunch of submodule stuff. I use the https in the git modules so folks don’t need ssh to update but that sucks for dev. I fix that by just adding an extra remote in my dev area after I update. So first time I clone I go to libs/foo and git remote add upstream-write or origin-write with ssh.

This may not help in your case since I don’t know your workflow

I found a nice solution that allows for both https and ssh by just making the url relative

	url = ../../imvu/gmtl.git

should tested and works just fine now

2 Likes

oh yeah that works great if you are all in GitHub! Should have thought of that. Glad it works for you! That syntax can cause problems if people fork your plugin and not your submodules though, just FYI.

(but again I don’t know your workflow)

1 Like

I just tried to git pull and got this error:

$ git status
On branch master
Your branch and 'origin/master' have diverged,
and have 1 and 6 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)

nothing to commit, working tree clean

I think I’ll delete this repo and try again.

did rm -rf on the whole folder, re-cloned, stll get that same ssh error:

$ git submodule update --init --recursive
Cloning into '/d/Rack/plugins/questionablemodules/src/gmtl'...
The authenticity of host 'github.com (192.30.255.113)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Anyway, the new version in the library does indeed have labels I think they are off by default? Which is kind of weird. In any case, once you turn them on the font size is super small. Totally out of scale with other VCV modules. I can’t read them. (notice that the huge majority of VCV modules have the labels on all the time.)

Questionable Modules 2.1.8 has been released :slight_smile:

Change Log:

  • SLURP Oscillator now has a stereo mode.
  • SLURP also has a new polyphonic mode called spread. (CPU Intensive, hopefully less in future updates)
  • Can now disable the octave knobs quantization for more fine tune offsets (for SLURP). (broken in Rack 2.4.0 :frowning: )
  • Rack 2.4.0 prefer dark panel is taken into account for newly created modules. Modules can still be changed to different themes regardless of this. Rack 2.4.0 is now required to run

you can check it out here: Release Release v2.1.8a · isivisi/questionablemodules · GitHub, or wait until its on the library :slight_smile:

known issues:

A very minimal change in 2.4.0 has set some knobs to snap on by default breaking some functionality, a fix is on the way. You can get it now at: Release Release v2.1.9 · isivisi/questionablemodules · GitHub

11 Likes

Questionable Modules 2.1.10 has been released :smiley:

Change Log:

  • New module Greenscreen allows you to change the rack background to a solid color.
  • New module Night-bin can check github for nightly builds and download them for you.
  • Fixed missing text with nandomizer and discombobulator themes
  • normalizeSpreadVolume is now properly saved in SLURP
  • Global theme now gets reset to default when you disable preferDarkPanels
  • Show labels now enabled by default (existing global and per module value will not change)

You can grab it here or wait until its in the library :slight_smile:

Known Issues:

  • Arm64 build will crash rack on close. This will be fixed in the next release, but if you need it fixed right now you can grab the Nightly build
3 Likes

Great stuff.

Somethings not quite right with the sorting. Also, it seems to be impossible to deselect a plugin … the subscribed ones are not marked in the list.

1 Like

easy enough to delete/change in the configuration offcause

will you make it possible to enter URLS here too - for plugins outside the library ?

%RACK_USER_DIR%\questionablemodules.json

{
  "theme": "Dark",
  "treequencerScreenColor": 1,
  "settingsVersion": 0,
  "showDescriptors": false,
  "gitPersonalAccessToken": "##REDACTED##",
  "nightbinSelectedPlugins": [
    "SurgeXTRack"
  ]
}

Oh yea I did forget about sorting them, that’s the order they get loaded in.

I pushed a quick change that sorts and gives you the option to remove. You should be able to grab the change quite easily with night-bin :stuck_out_tongue:

Yes custom urls are next on my list of upgrades. I just wanted to get the basics working properly first :slight_smile:

2 Likes

Deleting Night-bin and then quitting Rack causes a crash. Looks like some structures are left allocated that eventually cause a double free on Rack exit:

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000010
Exception Codes:       0x0000000000000001, 0x0000000000000010

VM Region Info: 0x10 is not in any region.  Bytes before following region: 105553518919664
      REGION TYPE                    START - END         [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      UNUSED SPACE AT START
--->  
      MALLOC_NANO (reserved)   600018000000-600020000000 [128.0M] rw-/rwx SM=NUL  ...(unallocated)

Thread 0 Crashed::  Dispatch queue: com.apple.main-thread
0   plugin.dylib                  	       0x129436a7c NightBinWidget::~NightBinWidget() + 112
1   libRack.dylib                 	       0x101774e68 rack::widget::Widget::clearChildren() + 104
2   libRack.dylib                 	       0x101774d48 rack::widget::Widget::~Widget() + 48
3   libRack.dylib                 	       0x1016fa35c rack::app::browser::ModelBox::~ModelBox() + 12
4   libRack.dylib                 	       0x101774e68 rack::widget::Widget::clearChildren() + 104
5   libRack.dylib                 	       0x101774d48 rack::widget::Widget::~Widget() + 48
6   libRack.dylib                 	       0x101773a68 rack::widget::FramebufferWidget::~FramebufferWidget() + 12
7   libRack.dylib                 	       0x101774e68 rack::widget::Widget::clearChildren() + 104
8   libRack.dylib                 	       0x101774d48 rack::widget::Widget::~Widget() + 48
9   libRack.dylib                 	       0x1016fa35c rack::app::browser::ModelBox::~ModelBox() + 12
10  libRack.dylib                 	       0x101774e68 rack::widget::Widget::clearChildren() + 104
11  libRack.dylib                 	       0x101774d48 rack::widget::Widget::~Widget() + 48
12  libRack.dylib                 	       0x1016fa35c rack::app::browser::ModelBox::~ModelBox() + 12
13  libRack.dylib                 	       0x101774e68 rack::widget::Widget::clearChildren() + 104
14  libRack.dylib                 	       0x101774d48 rack::widget::Widget::~Widget() + 48
15  libRack.dylib                 	       0x1016fa35c rack::app::browser::ModelBox::~ModelBox() + 12
16  libRack.dylib                 	       0x101774e68 rack::widget::Widget::clearChildren() + 104
17  libRack.dylib                 	       0x101774d48 rack::widget::Widget::~Widget() + 48
18  libRack.dylib                 	       0x1016fa35c rack::app::browser::ModelBox::~ModelBox() + 12
19  libRack.dylib                 	       0x101774e68 rack::widget::Widget::clearChildren() + 104
20  libRack.dylib                 	       0x101774d48 rack::widget::Widget::~Widget() + 48
21  libRack.dylib                 	       0x101774ed8 rack::widget::Widget::~Widget() + 12
22  libRack.dylib                 	       0x101774e68 rack::widget::Widget::clearChildren() + 104
23  libRack.dylib                 	       0x101774d48 rack::widget::Widget::~Widget() + 48
24  libRack.dylib                 	       0x101774ed8 rack::widget::Widget::~Widget() + 12
25  libRack.dylib                 	       0x101774e68 rack::widget::Widget::clearChildren() + 104
26  libRack.dylib                 	       0x101774d48 rack::widget::Widget::~Widget() + 48
27  libRack.dylib                 	       0x10176e3c4 rack::ui::ScrollWidget::~ScrollWidget() + 48
28  libRack.dylib                 	       0x101774e68 rack::widget::Widget::clearChildren() + 104
29  libRack.dylib                 	       0x101774d48 rack::widget::Widget::~Widget() + 48
30  libRack.dylib                 	       0x1016fb050 rack::app::browser::Browser::~Browser() + 12
31  libRack.dylib                 	       0x101774e68 rack::widget::Widget::clearChildren() + 104
32  libRack.dylib                 	       0x101774d48 rack::widget::Widget::~Widget() + 48
33  libRack.dylib                 	       0x1016fa35c rack::app::browser::ModelBox::~ModelBox() + 12
34  libRack.dylib                 	       0x101774e68 rack::widget::Widget::clearChildren() + 104
35  libRack.dylib                 	       0x101774d48 rack::widget::Widget::~Widget() + 48
36  libRack.dylib                 	       0x101735f38 rack::app::Scene::~Scene() + 48
37  libRack.dylib                 	       0x1016a0fc8 rack::Context::~Context() + 184
38  Rack                          	       0x100c96834 main + 3512
39  dyld                          	       0x196a33f28 start + 2236

MacOS 13.5.2, M1, Rack 2.4.1 arm64, latest build, just downloaded. Also still doesn’t sort plugins alphabetically btw.

Edit: Seems to leave some permanent structures in Rack as it crashes still on exit with same stack on exit, even though no Night-bin had been used since initial test and several new patches were played with (with no Night-bin ever added).

Awesome! Greenscreen is perfect for streamers!

And Slurp is one of my favorite VCO!! Great sounds! I am currently studying what quaternions are to better understand that module. As always, Math rules! :+1:

1 Like