testers for random chord sequencer

how would i make the names readable? i’m on windows which doesn’t have address sanitizer but i could try to run rack in a linux vm for that.

I think there is a way to use standard tools that you already have to “un mangle” the names. There might even be a web site that will do it - but I don’t know myself

Yeah, ASAN. In my experience it’s easy to use on mac, possible to use in Linux, and I have never tried on windows. It’s enough of a pain to try on linux that I can’t with good concience recommend that, esp if you don’t already have a Linux VM set up. I have done it twice when I had mysterious crashes, but… It would probably be much easier to get all the free plugins required to load @rsmus7 's patch and try to report.

Totally unrelated, if you stay in this “business” you will want a linux VM, for a variety of reasons.

1 Like

I just had the Audio-8 module loaded and just when I want to load the RandomChordRecorder VCV crashes.

So, from my last log file:


[210.882 info src/MultiVUMeter.h:40] short 1   
[221.833 fatal src/main.cpp:45] Fatal signal 22. Stack trace:    
36: ZN4rack10appDestroyEv 0x456435   
35: raise 0x8207abe0   
34: abort 0x8207f1e0     
33: ZN9__gnu_cxx27__verbose_terminate_handlerEv 0x6fc5f170      
32: ZN10__cxxabiv111__terminateEPFvvE 0x6fc581b0   
31: ZSt9terminatev 0x6fd302b0   
30: _cxa_throw 0x6fd39080   
29: ZSt21__throw_runtime_errorPKc 0x6fd3a640   
28: ZNSt13random_device7_M_initERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE 0x6fcf10f0   
27: ZNSt13random_deviceC1Ev 0x4e72da20   
26: ZN19Randomchordrecorder16getSeededTwisterEv 0x4e724880   
25: ZN19RandomchordrecorderC1Ev 0x4e7256b0   
24: ZZN4rack11createModelI19Randomchordrecorder25RandomchordrecorderWidgetEEPNS_6plugin5ModelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEN6TModel18createModuleWidgetEv 0x4e733520    
23: ZN4rack3app11AudioWidget12setAudioPortEPNS_5audio4PortE 0x49839c    
22: ZN4rack3app8ModelBox8onButtonERKNS_5event6ButtonE 0x75cbc0    
21: ZN4rack6widget6Widget8onButtonERKNS_5event6ButtonE 0x7726f0    
20: ZN4rack6widget6Widget8onButtonERKNS_5event6ButtonE 0x7726f0    
19: ZN4rack6widget6Widget8onButtonERKNS_5event6ButtonE 0x7726f0    
18: ZN4rack2ui12ScrollWidget8onButtonERKNS_5event6ButtonE 0x4a3ed4    
17: ZN4rack6widget12OpaqueWidget8onButtonERKNS_5event6ButtonE 0x771cd0    
16: ZN4rack3app14BrowserOverlay8onButtonERKNS_5event6ButtonE 0x7530d0   
15: ZN4rack6widget12OpaqueWidget8onButtonERKNS_5event6ButtonE 0x771cd0    
14: ZN4rack5event5State12handleButtonENS_4math3VecEiii 0x4576c8    
13: ZN4rack7updater17isUpdateAvailableEv 0x45914e    
12: glfwPlatformUnlockMutex 0x4d78ae    
11: CallWindowProcW 0x80f0e460    
10: CallWindowProcW 0x80f0e460    
9: glPushClientAttrib 0x6c089520    
8: CallWindowProcW 0x80f0e460     
7: DispatchMessageW 0x80f0e040    
6: glfwPlatformPollEvents 0x4daf66    
5: ZN4rack6Window3runEv 0x4594ea    
4: main 0x781840    
3: main 0x781840   
2: main 0x781840   
1: BaseThreadInitThunk 0x823a7020    
0: RtlUserThreadStart 0x824e2630    

[230.234 info src/Settings.cpp:69] Saving plugin settings C:\Users\smues\DOCUME~1/Rack/SlimeChild/Substation.json

I use the FL Studio ASIO driver on my WIN10 Ryzen laptop

There’s a known issue with random number generator seeding in windows using time. I ran into it and it was a pita to figure out.

Look at some of my (frozen wasteland) modules that use probability (and there are a few) and see how I do the seeding

1 Like

thanks, i see you use srand(time(NULL)); in the constructor, i’m not sure if that will work with what i was doing though, because i’m using random_device

Yeah, don’t use random device

I was using random device because the discrete_distribution function uses that, do you know if that would be usable with srand? I could just write up my own function to get a weighted random distribution but i don’t want to reinvent the wheel if i don’t have to.

I think you may be over complicating things - you can still use std::random, you just need to change how you seed it (as mentioned above). Most other random distributions are derived from that base random function, so you should not need to do anything very esoteric unless you really want to

Hoping this helps.

I’ve run into this issue with building (I build nearly everything myself) some plugins on Windows. One of the latest is a Pull Request I’ve made for SilverMoss (yet to be released.)

This PR shows how I’ve fixed this issue. It’s to do with what version of GCC one uses to compile the code. The background, if you’re interested, is linked there as well.

Like Eric said avoid random device. You can however seed using time; in this case use time(0) as well as the necessary #include <ctime>

I’ll submit a PR to your repo for review.

thanks! i had released it already on vcv library but i intended to fix it. i just want to double check by building it on my computer and then i’ll approve the pull request and change the version so it’s not broken in vcv library.

No problem, glad to help.