Meta Morph : Early Access


Meta Morph is an open source project featuring vcv rack modules to use with your Eigenharp.

An introduction into Meta Morph, and its motivations and goals can be found
Meta Morph Introduction

Early Access

Meta Morph is being released into Early Access to give the community an opportunity to improve Meta Morph before release.

it will focus on:

  • testing
  • development of demo/tutorial patches
  • development of user documentation
  • development of preset patches

by definition there’s limited documentation etc and may be bugs, or known issues, so its not for everyone :slight_smile:
the aim is to ensure that when released new users will have a good experience, by sorting this out with a dedicated group of users.
the other aim is to (hopefully) reduce efforts in these areas on my part, and so allow me to focus on development.

I should also stress whilst changes and new features may be added during EA, this is NOT its primary goal. It’s focus is to get what we already have ready for general release.

How EA users can contribute?


In this role, if you gave issues you will need to provide a simple patch that illustrates the issue.
the simpler the better… I dont have time to go thru massive patches that are not working, you’ll need to ‘isolate’ the problem.
we will need to est

develop demo/tutorial patches

we will want to co-ordinate this so we cover a broad base.
Im not after very complicated patches, rather patches that will show new users how to use modules.
There simplicity also will help with the testing aspect (see above)

improve user documentation

my documentation will be a bit sparse initialy, it would be useful for new users to read these, and start expanding on them.
new users are ideal for this, as they are a blank canvas, so know what needs to be documented.

development of preset patches

This will be in the LATER part of the EA program, when the modules are considered mature (unlikely to change).
Here we want a couple of more complex patches for each Eigenharp, that new users can use as a ‘starting point’
unlike the tutorial patches, these to do aim to teach, so complexity is not a problem.
e.g. the Factory presets for EigenD are useful to all EigenD users, but they are not easy to understand/modify.

Important notes on patches

This must only use VCV Factory Modules (and Meta Morph) so that any user can install VCV and use without installing any other modules.
this is very important support and and first impressions.
we will also have a means to share more advanced patches before users… but they are not considered part of the EA program.

The final important aspect of being part of EA is by helping contribute the above, you will gain knowledge in Meta Morph, its goals and how it works.
this will enable you to participate meaningfully in dicussions about how things can evolve.

None of the above needs to be particuarly time-consuming, nor does it require any special expertise.
But I am asking for a bit more commitment, that I’ll install it, and fiddle with it for a while … needs to be a bit more focued!

What Early Access is NOT

It is not a general release for those that want to use Meta Morph but will not ‘contribute’ to the project. As you can imagine I’m very busy with development, so at this stage I want to limit my ‘support’ to those that will help the project. once the EA is complete, then due to EA goals, it will be easier to support, so I can help more users.

How to gain access to Early Access?

Please read the “How EA users can contribute” above, and decide if you will be willing to contribue.
if so, then send me a DM, @thetechnobear

note: Initial release will be macOs only (arm and intel)

Bugs / Issues

please report bugs or issues here, so that other community members can verify issues.also please state, if you are running on Intel or Arm.

Finally please make sure you are running the latest version of VCV Rack, as I will only be testing / developing with this (currently I believe it’s 2.41.)


reserved for future use…

could those with EA please test each of the demo patches that they have eigenharps for and let me know if you have any issues.

also please state if you have test on Intel or Arm (M1/M2)

OK, so working on a 2018 x64 MacBook Pro, I’ve spotted two issues so far testing with my Alpha, using the Free version of VCV Rack v2.4.1

  1. Creating a simply patch along the lines of the the intro video, I note that the percussion keys are sounding when only the main keygroup row is connected from the Eigenharp module.
  2. If I start with a blank rack, load the Alpha.vcv that comes with MetaMorph, it loads ok, but as soon as I set the Audio Out, VCV crashes. I’ve sent the crash report on by email as it’s a little too long to include here. I’ve also tried to delete the Audio module before setting the output device it also crashes. Trying similar with the Pico and it’s also crashing. Creating a simple patch from scratch for the Pico also works ok as with the Alpha. Reloading my simple patches works ok. The crash reports suggest the issue might lie in the Function12 module.

OK, I can confirm that I can crash Rack in a clean slate just by loading the Function12. All other modules load ok. When I load the Alpha sample, Function12 loads, and I can interact with it. If I delete it, then I can set the Audio device, but then crashes when I try to add Function12 again.

1 Like

Alpha - oops, yup found the issue…
Ive got some inconsistency in EigenLite between Tau and Alpha which I need to resolve. I just need to decide which is correct :slight_smile:

Function12 crash was caused by compiler differences for Intel and Arm -Ive fixed this one.
however, we will need to keep an eye out for other issues. since Ive done all my testing on Arm.
fortunately, I was able to reproduce issue by running Intel version of Rack2 under Rosetta… but then was a bit of trial and error to find out what one compiler was fine with, and the other not!

tl;dr; once Ive resolved and testing alpha issue, I’ll out out a new build. and let you know here.

1 Like

Some first tests with Pico on a 2023 M2 MacBook in both native and x86 (Rosetta) mode (with macOS 13.6.2).
In case it matters (e.g. for the led topics): The Pico is connected via a small passive usb-c to 4xusb-a hub.

In x86 mode (this will be my main music platform later on, just testing on my work notebook for now):

  • lights cannot be switched off anymore, I can only change the color (with both scaler or illuminator) - works in ARM mode.
  • when quitting VCV the leds flash (not happening in ARM mode)
  • Function12 crash as already reported above (not happening in ARM mode)

Some observations (not bugs):

  • first tried to utilize the single opportunity of complete cluelessness - to try out the modules without watching the explanation video or reading any documentation. The major thing I didn’t guess right was the meaning of the rows in the Eigenharp module (first row function keys, second row main keys, third row bass keys). Perhaps some labels might help? And that some buttons that cannot be turned actually have a right click menu. (Could turning the knob still switch through the options? Or perhaps another UI element than a knob might be easier to understand?)
  • Scaler applies scale to both rows and cols. That was a little unexpected but can also be cool (e.g. pentatonic in both directions and then playing random notes :slight_smile: ). But perhaps we could choose scales for rows and cols separately, so one can e.g. have pentatonic rows and still a major third (which isn’t part of the pentatonic scale) between cols?
  • On EigenD I think there is a function applied to pitch bending on the x-axis(?) (Edit: Ok, it’s also exponential and not linear in Meta Morph!) And I often only used a quarter tone pitch bend range instead of a semitone. These things can be changed with separate rescaling modules though, so I think I will get this behavior back if I want to.
  • Perhaps additional relative (resetting) Strip outputs would be nice? But connecting the absolute, decimated Strip to Global pitch bend in actually cool on Pico, so one can quickly dial in octaves :slight_smile:
1 Like

Yep, it also might be nice to have a gate on the strip outputs. I was thinking about a way to have a filtered noise generated from the strip, but the Q is then how to control the VCA.

not sure I understand this, will test on intel

yeah, I need to add labels… but space is a bit tight in the UI

I thought it did… but this is a limitation of the default controls I believe
and some point id likely switch to some custom controls, but its not a priority - I want to get functionality in place first.

this is deliberate, it allows for a very flexible scale layout across the surface whilst being extremely quick n’ east - but you do need to ‘think it thru’ and get your head around it. also remember, by creating your own Scala file you also control layout as well as scales… think creative , abuse it :wink:

also back to UI complexity/layout… its going to be better to create alternative modules rather than creating more complexity in one module, thats the modular approach.

im not quite sure how you think you’d do scales separately for rows/cols given then are the same thing… but it’d be a separate module, and separate discussion.
BUT this is advantage of modular, separating concerns KISS, and even allows other devs to come up with variations (hence ‘dev api’)

quarter tone pitch… you can use an attenuator to reduce range of input rather than PBR. again UI limitation, I think it’d kind of be a pain for it not be semi tone snapped.

@NothanUmber @GoneCaving strips
yes, I considered both (gate and relative) the issue is UI space…
adding both relative and gate = 4 more outputs (as we have 2 strips)

that said, relative is probably not required if you have gate, since relative is just a function of absolute… youd just need to use a differentiator.

I’d also wondered if a bipolar output might be better, with 0v in the centre…it feels a bit more natural to me. (and you can use a scale/offset get back to unipolar)

more generally, Im considering going back to a principle of 10v pp output. , as I find the range a bit ‘wide’ currently.

X,Y,Strip, Breath = -5 to 5v
Z = 0 to 10v

(it was like this before my latest eigenlite changes, but I switch as I thought standard 10v was more intuitive, but now Im not convinced)

overall, you can see UI limitations comes up frequently.

generally, the modules are pretty big already ,due to number amount of IO (from harps) , and I don’t want to increase the sizes, and I dont like ‘fussy’ UIs they need to be ‘clean’
similarly Im using standard UI component at the moment to focus on functionality.

once things are more mature Id like to work on the UI a bit, custom controls etc … and perhaps with someone that has a flair for UI can help improve the UI, make them tidy.

so Im working within a few constraints for now.

1 Like

release 2.1.1

quite a few changes in this…


  • various issues with Alpha
  • various issues with intel build
  • rationalise use of courses in EigenLite


  • x, y, strip 1-2 are now bipolar -5v to 5v, z remain unipolar 10v
    (basically standardised on 10v pp)
  • strips return to zero on release.
  • labels added to eigenharp modules key groups
  • scaler - offset renamed to Ref to better describe its purpose and use.
  • leds are now cleared when processing is stopped
  • update demo patches to use slew on Z to remove ‘clicks’
  • improve pico strip handling (less quantisation)

Tried it on my music Mac (MacBookPro11,3; x86; 16 GB RAM; macOS 11.7.10 Big Sur) today, getting an instant segfault in VCV Rack (Pro 2.4.1) when right clicking to list the modules. (VCV Rack doesn’t crash as long as Meta Morph isn’t installed).
Apple doesn’t support newer macOS versions on this machine. (There is OpenCore Legacy Patcher, but I am hesitant to use this as long as all applications still work) Here the content of the log file:

[0.004 info adapters/standalone.cpp:152 main] VCV Rack Pro 2.4.1 macOS x64
[0.005 info adapters/standalone.cpp:153 main] Standalone
[0.005 info adapters/standalone.cpp:154 main] Mac 11.6
[0.005 info adapters/standalone.cpp:160 main] Args: /Applications/VCV Rack 2
[0.005 info adapters/standalone.cpp:163 main] System directory: /Applications/VCV Rack 2
[0.005 info adapters/standalone.cpp:164 main] User directory: /Users/ferdinand/Documents/Rack2
[0.005 info adapters/standalone.cpp:166 main] Bundle path: /Applications/VCV Rack 2
[0.005 info adapters/standalone.cpp:168 main] System time: 2023-11-26 16:36:17 +0100
[0.005 info src/settings.cpp:519 load] Loading settings /Users/ferdinand/Documents/Rack2/settings.json
[0.022 info adapters/standalone.cpp:191 main] Initializing network
[0.024 info adapters/standalone.cpp:194 main] Initializing audio
[0.024 info src/rtaudio.cpp:234 RtAudioDriver] Creating RtAudio Core Audio driver
[0.047 info adapters/standalone.cpp:197 main] Initializing MIDI
[0.057 info adapters/standalone.cpp:203 main] Initializing plugins
[0.057 info src/plugin.cpp:162 loadPlugin] Loading Core plugin
[0.058 info src/plugin.cpp:235 loadPlugin] Loaded Core 2.4.1
[0.058 info src/plugin.cpp:164 loadPlugin] Loading plugin from /Users/ferdinand/Documents/Rack2/plugins-mac-x64/MetaMorph
[0.073 info src/plugin.cpp:235 loadPlugin] Loaded MetaMorph 2.1.1
[0.073 info src/plugin.cpp:164 loadPlugin] Loading plugin from /Users/ferdinand/Documents/Rack2/plugins-mac-x64/Fundamental
[0.081 info src/plugin.cpp:235 loadPlugin] Loaded Fundamental 2.3.1
[0.082 info adapters/standalone.cpp:205 main] Initializing browser
[0.082 info adapters/standalone.cpp:207 main] Initializing library
[0.082 info adapters/standalone.cpp:210 main] Initializing UI
[0.082 info adapters/standalone.cpp:212 main] Initializing window
[0.157 info adapters/standalone.cpp:218 main] Creating MIDI loopback
[0.157 info adapters/standalone.cpp:220 main] Creating engine
[0.157 info adapters/standalone.cpp:222 main] Creating history state
[0.157 info adapters/standalone.cpp:224 main] Creating event state
[0.157 info adapters/standalone.cpp:226 main] Creating scene
[0.157 info adapters/standalone.cpp:229 main] Creating patch manager
[0.157 info adapters/standalone.cpp:232 main] Creating window
[0.249 info src/window/Window.cpp:355 Window] Window content scale: 2.000000
[0.534 info src/window/Window.cpp:417 Window] Renderer: NVIDIA Corporation NVIDIA GeForce GT 750M OpenGL Engine
[0.534 info src/window/Window.cpp:418 Window] OpenGL: 2.1 NVIDIA-16.0.13
[0.556 info src/window/Window.cpp:50 loadFile] Loaded font /Applications/VCV Rack 2
[0.556 info src/patch.cpp:398 loadAutosave] Loading autosave /Users/ferdinand/Documents/Rack2/autosave/patch.json
[0.556 info adapters/standalone.cpp:267 main] Running window
[0.597 info src/window/Svg.cpp:28 loadFile] Loaded SVG /Applications/VCV Rack 2
[4.084 info src/network.cpp:150 requestJson] Requesting JSON GET
[4.466 info src/app/Browser.cpp:201 createPreview] Creating module widget TheTechnobear EigenHarp
[4.469 info src/window/Svg.cpp:28 loadFile] Loaded SVG /Users/ferdinand/Documents/Rack2/plugins-mac-x64/MetaMorph/res/EDevice.svg
[4.470 info src/window/Svg.cpp:28 loadFile] Loaded SVG /Applications/VCV Rack 2
[4.470 info src/window/Svg.cpp:28 loadFile] Loaded SVG /Applications/VCV Rack 2
[4.470 info src/window/Svg.cpp:28 loadFile] Loaded SVG /Applications/VCV Rack 2
[4.470 info src/window/Svg.cpp:28 loadFile] Loaded SVG /Applications/VCV Rack 2
[4.472 fatal adapters/standalone.cpp:49 fatalSignalHandler] Fatal signal 11. Stack trace:
21: Rack(fatalSignalHandler(int)+27)
20: libsystem_platform.dylib(_sigtramp+29)
19: ???(0x0+11)
18: libRack.dylib(rack::app::PortWidget* rack::app::getFirstDescendantOfTypeWithCondition<rack::app::PortWidget, rack::app::ModuleWidget::getInput(int)::$_1>(rack::widget::Widget*, rack::app::ModuleWidget::getInput(int)::$_1)+46)
17: libRack.dylib(rack::app::ModuleWidget::addInput(rack::app::PortWidget*)+38)
16: plugin.dylib(EDeviceWidget::EDeviceWidget(EDevice*)+1285)
15: plugin.dylib(EDeviceWidget::EDeviceWidget(EDevice*)+29)
14: plugin.dylib(rack::plugin::Model* rack::createModel<EDevice, EDeviceWidget>(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >)::TModel::createModuleWidget(rack::engine::Module*)+211)
13: libRack.dylib(rack::app::browser::ModelBox::createPreview()+481)
12: libRack.dylib(rack::app::browser::ModelBox::draw(rack::widget::Widget::DrawArgs const&)+27)
11: libRack.dylib(rack::widget::Widget::draw(rack::widget::Widget::DrawArgs const&)+461)
10: libRack.dylib(rack::widget::Widget::draw(rack::widget::Widget::DrawArgs const&)+461)
9: libRack.dylib(rack::widget::Widget::draw(rack::widget::Widget::DrawArgs const&)+461)
8: libRack.dylib(rack::widget::Widget::draw(rack::widget::Widget::DrawArgs const&)+461)
7: libRack.dylib(rack::ui::ScrollWidget::draw(rack::widget::Widget::DrawArgs const&)+52)
6: libRack.dylib(rack::widget::Widget::draw(rack::widget::Widget::DrawArgs const&)+461)
5: libRack.dylib(rack::widget::Widget::draw(rack::widget::Widget::DrawArgs const&)+461)
4: libRack.dylib(rack::widget::Widget::draw(rack::widget::Widget::DrawArgs const&)+461)
3: libRack.dylib(rack::window::window::step()+1870)
2: libRack.dylib(rack::window::window::run()+40)
1: Rack(main+4599)
0: libdyld.dylib(start+1)

its dying whilst in vcv code, appears to be when adding a ‘standard’ input port widget.
absolutely no idea why… the trace gives no indication as to possible fault.

given I don’t have anything with with 11.7.x on, on anything anywhere near this age … theres no way I can test nor debug this.

Im assuming this doesn’t happen on other intel (more modern OS) versions?

Here the details that would go into the Apple report. Don’t see anything Meta Morph specific…
Have also unplugged the hub with all usb devices as a test. Didn’t help.

Process: Rack [1659]
Path: /Applications/VCV Rack 2
Identifier: com.vcvrack.rack
Version: 2.4.1 (2.4.1)
Code Type: X86-64 (Native)
Parent Process: ??? [1]
Responsible: Rack [1659]
User ID: 502

Date/Time: 2023-11-26 17:01:10.309 +0100
OS Version: macOS 11.7.10 (20G1427)
Report Version: 12
Anonymous UUID: 8826B553-1EFB-D1BD-2E33-F6F56CD909B1

Time Awake Since Boot: 4000 seconds

System Integrity Protection: enabled

Crashed Thread: 0 Dispatch queue:

Exception Codes: EXC_I386_GPFLT

Thread 0 Crashed:: Dispatch queue:
0 libc++abi.dylib 0x00007fff20411c42 __dynamic_cast + 181
1 libRack.dylib 0x00000001019452fe rack::app::PortWidget* rack::app::getFirstDescendantOfTypeWithCondition<rack::app::PortWidget, rack::app::ModuleWidget::getInput(int)::$_1>(rack::widget::Widget*, rack::app::ModuleWidget::getInput(int)::$_1) + 46
2 libRack.dylib 0x0000000101945166 rack::app::ModuleWidget::addInput(rack::app::PortWidget*) + 38
3 plugin.dylib 0x0000000101505e35 EDeviceWidget::EDeviceWidget(EDevice*) + 1285
4 plugin.dylib 0x000000010150591d EDeviceWidget::EDeviceWidget(EDevice*) + 29
5 plugin.dylib 0x00000001014ffb73 rack::plugin::Model* rack::createModel<EDevice, EDeviceWidget>(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >)::TModel::createModuleWidget(rack::engine::Module*) + 211
6 libRack.dylib 0x000000010192ec81 rack::app::browser::ModelBox::createPreview() + 481
7 libRack.dylib 0x000000010192e60b rack::app::browser::ModelBox::draw(rack::widget::Widget::DrawArgs const&) + 27
8 libRack.dylib 0x00000001019a911d rack::widget::Widget::draw(rack::widget::Widget::DrawArgs const&) + 461
9 libRack.dylib 0x00000001019a911d rack::widget::Widget::draw(rack::widget::Widget::DrawArgs const&) + 461
10 libRack.dylib 0x00000001019a911d rack::widget::Widget::draw(rack::widget::Widget::DrawArgs const&) + 461
11 libRack.dylib 0x00000001019a911d rack::widget::Widget::draw(rack::widget::Widget::DrawArgs const&) + 461
12 libRack.dylib 0x00000001019a20e4 rack::ui::ScrollWidget::draw(rack::widget::Widget::DrawArgs const&) + 52
13 libRack.dylib 0x00000001019a911d rack::widget::Widget::draw(rack::widget::Widget::DrawArgs const&) + 461
14 libRack.dylib 0x00000001019a911d rack::widget::Widget::draw(rack::widget::Widget::DrawArgs const&) + 461
15 libRack.dylib 0x00000001019a911d rack::widget::Widget::draw(rack::widget::Widget::DrawArgs const&) + 461
16 libRack.dylib 0x00000001019ae26e rack::window::window::step() + 1870
17 libRack.dylib 0x00000001019adb08 rack::window::window::run() + 40
18 com.vcvrack.rack 0x000000010136fcf7 main + 4599
19 libdyld.dylib 0x00007fff20468f3d start + 1

Thread 1:
0 libsystem_pthread.dylib 0x00007fff20449420 start_wqthread + 0

Thread 2:: AMCP Logging Spool
0 libsystem_kernel.dylib 0x00007fff204182d6 semaphore_wait_trap + 10
1 0x00007fff2850d8da caulk::mach::semaphore::wait_or_error() + 16
2 0x00007fff284fa836 caulk::semaphore::timed_wait(double) + 110
3 0x00007fff284fa784 caulk::concurrent::details::worker_thread::run() + 30
4 0x00007fff284fa502 void* caulk::thread_proxy<std::__1::tuple<caulk::thread::attributes, void (caulk::concurrent::details::worker_thread::)(), std::__1::tuplecaulk::concurrent::details::worker_thread* > >(void) + 45
5 libsystem_pthread.dylib 0x00007fff2044d8fc _pthread_start + 224
6 libsystem_pthread.dylib 0x00007fff20449443 thread_start + 15

Thread 3:
0 libsystem_pthread.dylib 0x00007fff20449420 start_wqthread + 0

Thread 4:
0 libsystem_kernel.dylib 0x00007fff2041829a mach_msg_trap + 10
1 libsystem_kernel.dylib 0x00007fff2041860c mach_msg + 60
2 0x00007fff34e98ba6 XServerMachPort::ReceiveMessage(int&, void*, int&) + 94
3 0x00007fff34ec9453 MIDIProcess::MIDIInPortThread::Run() + 111
4 0x00007fff34eaf4a2 XThread::RunHelper(void*) + 10
5 0x00007fff34eb061b CAPThread::Entry(CAPThread*) + 77
6 libsystem_pthread.dylib 0x00007fff2044d8fc _pthread_start + 224
7 libsystem_pthread.dylib 0x00007fff20449443 thread_start + 15

Thread 5:
0 libsystem_kernel.dylib 0x00007fff20420636 __select + 10
1 libRack.dylib 0x0000000101a54781 Curl_poll + 593
2 libRack.dylib 0x0000000101a50653 multi_wait + 1699
3 libRack.dylib 0x0000000101a508da curl_multi_poll + 26
4 libRack.dylib 0x0000000101a3ed8b curl_easy_perform + 395
5 libRack.dylib 0x00000001018e47f0 rack::network::requestJson(rack::network::Method, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, json_t*, std::__1::map<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > > > const&) + 896
6 libRack.dylib 0x00000001018dbc27 rack::library::checkAppUpdate() + 151
7 libRack.dylib 0x00000001018dedbd void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_deletestd::__1::__thread_struct >, rack::library::init()::$_0> >(void*) + 253
8 libsystem_pthread.dylib 0x00007fff2044d8fc _pthread_start + 224
9 libsystem_pthread.dylib 0x00007fff20449443 thread_start + 15

Thread 6:
0 libsystem_pthread.dylib 0x00007fff20449420 start_wqthread + 0

Thread 7:
0 libsystem_pthread.dylib 0x00007fff20449420 start_wqthread + 0

Thread 8::
0 libsystem_kernel.dylib 0x00007fff2041829a mach_msg_trap + 10
1 libsystem_kernel.dylib 0x00007fff2041860c mach_msg + 60
2 0x00007fff20545ebf __CFRunLoopServiceMachPort + 316
3 0x00007fff2054459f __CFRunLoopRun + 1328
4 0x00007fff205439ac CFRunLoopRunSpecific + 563
5 0x00007fff22ed3b7a _NSEventThread + 124
6 libsystem_pthread.dylib 0x00007fff2044d8fc _pthread_start + 224
7 libsystem_pthread.dylib 0x00007fff20449443 thread_start + 15

Thread 9:
0 libsystem_pthread.dylib 0x00007fff20449420 start_wqthread + 0

Thread 10:
0 libsystem_pthread.dylib 0x00007fff20449420 start_wqthread + 0

Thread 11:
0 libsystem_kernel.dylib 0x00007fff2041ab92 __semwait_signal + 10
1 libsystem_c.dylib 0x00007fff2039ac1a nanosleep + 196
2 libc++.1.dylib 0x00007fff203ed93a std::__1::this_thread::sleep_for(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > const&) + 73
3 libRack.dylib 0x000000010199693b rack::engine::Engine_fallbackRun(rack::engine::Engine*) + 459
4 libRack.dylib 0x00000001019974bc void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_deletestd::__1::__thread_struct >, void ()(rack::engine::Engine), rack::engine::Engine*> >(void*) + 44
5 libsystem_pthread.dylib 0x00007fff2044d8fc _pthread_start + 224
6 libsystem_pthread.dylib 0x00007fff20449443 thread_start + 15

Thread 12:
0 libsystem_kernel.dylib 0x00007fff2041cc2a kevent + 10
1 libsystem_info.dylib 0x00007fff204a3705 _mdns_search_ex + 1232
2 libsystem_info.dylib 0x00007fff204a604c mdns_addrinfo + 483
3 libsystem_info.dylib 0x00007fff204a5e1e search_addrinfo + 164
4 libsystem_info.dylib 0x00007fff2049ec8d si_addrinfo + 1754
5 libsystem_info.dylib 0x00007fff2049e50b getaddrinfo + 176
6 libRack.dylib 0x0000000101a3d9f4 Curl_getaddrinfo_ex + 36
7 libRack.dylib 0x0000000101a366b3 getaddrinfo_thread + 83
8 libRack.dylib 0x0000000101a3e37d curl_thread_create_thunk + 29
9 libsystem_pthread.dylib 0x00007fff2044d8fc _pthread_start + 224
10 libsystem_pthread.dylib 0x00007fff20449443 thread_start + 15

Thread 0 crashed with X86 Thread State (64-bit):
rax: 0x01000007feedfacf rbx: 0x00007ffeee890a28 rcx: 0x0000000000000001 rdx: 0x0000600003ce0e40
rdi: 0x0000000101497000 rsi: 0x00007ffeee890a28 rbp: 0x00007ffeee890ab0 rsp: 0x00007ffeee890a20
r8: 0x0000000000000000 r9: 0x0000000000000020 r10: 0x00000000000007fb r11: 0x0000000000000200
r12: 0x0000000000000000 r13: 0x0000600003ce0e40 r14: 0x0000600003ce0e40 r15: 0x0000000101497000
rip: 0x00007fff20411c42 rfl: 0x0000000000000212 cr2: 0x0000600003605000

Logical CPU: 0
Error Code: 0x020000b8
Trap Number: 133

Thread 0 instruction stream:
b8 48 89 45 bf 8a 05 03-21 30 60 84 c0 0f 84 53 .H.E…!0....S 02 00 00 8a 1d 45 3e 37-60 84 db 0f 84 13 01 00 .....E>7
00 4c 3b 7d d0 0f 84 1b-01 00 00 49 8b 7f 08 48 .L;}…I…H
8b 45 d0 48 8b 70 08 e8-ae 21 00 00 85 c0 0f 84 .E.H.p…!..
02 01 00 00 49 8b 07 44-0f b6 c3 48 8d 9d 78 ff …I…D…H…x.
ff ff 4c 89 ff 48 89 de-4c 89 f2 b9 01 00 00 00 …L…H…L…
[ff]50 30 8b 43 34 0b 43-30 0f 85 8c 00 00 00 b8 .P0.C4.C0… <==
01 00 00 00 f0 48 0f c1-05 f1 3d 37 60 48 8d 48 …H…=7`H.H
ff 48 85 c8 48 8b 5d c8-75 23 48 8b 53 08 49 8b .H…H.].u#H.S.I.
4f 08 48 8b 45 d0 4c 8b-40 08 48 8d 35 e5 30 00 O.H.E.L.@.H.5.0.
00 bf 03 00 00 00 31 c0-e8 4f 21 00 00 48 8d b5 …1…O!..H…
78 ff ff ff 48 8b 45 d0-48 89 06 4c 89 6e 08 48 x…H.E.H…L.n.H

Thread 0 last branch register state not available.

Binary Images:
0x10136e000 - 0x101370fff +com.vcvrack.rack (2.4.1 - 2.4.1) /Applications/VCV Rack 2

External Modification Summary:
Calls made by other processes targeting this process:
task_for_pid: 0
thread_create: 0
thread_set_state: 0
Calls made by this process:
task_for_pid: 0
thread_create: 0
thread_set_state: 0
Calls made by all processes on this machine:
task_for_pid: 0
thread_create: 0
thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=727.1M resident=0K(0%) swapped_out_or_unallocated=727.1M(100%)
Writable regions: Total=633.9M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=633.9M(100%)

                            VIRTUAL   REGION 

REGION TYPE SIZE COUNT (non-coalesced)
=========== ======= =======
Accelerate framework 640K 5
Activity Tracing 256K 1
CG backing stores 7200K 6
CG image 72K 4
CG raster data 40K 2
CoreAnimation 744K 18
CoreGraphics 12K 2
CoreUI image data 1800K 13
Foundation 16K 1
Kernel Alloc Once 8K 1
MALLOC 225.8M 79
MALLOC guard page 32K 8
MALLOC_LARGE (reserved) 640K 4 reserved VM address space (unallocated)
MALLOC_NANO (reserved) 384.0M 1 reserved VM address space (unallocated)
OpenGL GLSL 256K 3
Stack 14.1M 14
__DATA 13.7M 300
__DATA_CONST 21.4M 171
__DATA_DIRTY 548K 98
__LINKEDIT 503.4M 11
__OBJC_RO 70.3M 1
__OBJC_RW 2496K 2
__TEXT 223.7M 304
__UNICODE 588K 1
mapped file 75.8M 19
shared memory 760K 16
=========== ======= =======
TOTAL 1.6G 1129
TOTAL, minus reserved VM space 1.2G 1129

Model: MacBookPro11,3, BootROM 478., 4 processors, Quad-Core Intel Core i7, 2,5 GHz, 16 GB, SMC 2.19f12
Graphics: kHW_IntelIrisProItem, Intel Iris Pro, spdisplays_builtin
Graphics: kHW_NVidiaGeForceGTX750MItem, NVIDIA GeForce GT 750M, spdisplays_pcie_device, 2 GB
Memory Module: BANK 0/DIMM0, 8 GB, DDR3, 1600 MHz, 0x80AD, 0x484D54343147533641465238412D50422020
Memory Module: BANK 1/DIMM0, 8 GB, DDR3, 1600 MHz, 0x80AD, 0x484D54343147533641465238412D50422020
AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0x134), Broadcom BCM43xx 1.0 ( AirPortDriverBrcmNIC-1680.11)
Bluetooth: Version 8.0.5d7, 3 services, 27 devices, 1 incoming serial ports
Network Service: Wi-Fi, AirPort, en0
PCI Card: pci8086,15f0, sppci_usbxhci, Thunderbolt@195,0,0
Serial ATA Device: APPLE SSD SM0512F, 500,28 GB
USB Device: USB 3.0 Bus
USB Device: 4-Port USB 3.0 Hub
USB Device: Apple Internal Keyboard / Trackpad
USB Device: BRCM20702 Hub
USB Device: Bluetooth USB Host Controller
USB Device: iConnectMIDI4+
USB Device: 4-Port USB 2.0 Hub
USB Device: Kensington Slimblade Trackball
USB Device: Jabra Speak 710
USB Device: Logitech Webcam C925e
USB Device: Gaming Keyboard G610
USB Device: USB 3.1 Bus
USB Device: Hub
USB Device: Hub
USB Device: LG Monitor Controls
Thunderbolt Bus: MacBook Pro, Apple Inc., 17.1
Thunderbolt Device: 38WN95C, LG Electronics, 3, 56.1

yeah, Ive just been looking at code… both my code, and also the relevant VCV Rack code in ModuleWidget (etc)

so my call into the api is here

2 libRack.dylib 0x0000000101945166 rack::app::ModuleWidget::addInput(rack::app::PortWidget*) + 38
3 plugin.dylib 0x0000000101505e35 EDeviceWidget::EDeviceWidget(EDevice*) + 1285

which is…

addInput(createInputCentered<PJ301MPort>(mm2px(Vec(63.211, 77.953)), module, EDevice::IN_FUNC_LIGHTS_INPUT));

with the exception of the enum (which is correct) , thats all vcv code.

this line of code is actually auto generated by a helper script, and everything around it is correct.
why just this module , no idea… possibly something to do with the svg file its just loaded causing memory corruption?

but any which way, from what little we have , it looks like its a bug in vcv rather than my code.

only other thing I can think of, is something in the build tools setup, thats causing an issue for earlier versions of macOS, but again without a testing/dev environment… thats just a stab in the dark.
nothing really I can follow thru on.

@GoneCaving which macOS are you using on your Intel Mac? When looking at the OpenCore Legacy Patcher issues list it seems to get longer the newer the to-be-installed OS is. So if nothing helps I would consider to jump to a newer (unsupported) macOS - but for mentioned reasons preferably the oldest that is known to work with Meta Morph.

actually Antonio is the master in this area :). @keymanpal

he tested a very early build of this on intel for me.
specially, High Sierra (10.13) and Mojave (10.14) , and didn’t appear to have any issues.

@keymanpal could you possibly try 2.1.1 on some early intel machines?

actually also 2.1.0 too… to check there is not something recent causing the issue.

(at this point, its just enough to check that you can do browse modules with them installed)

1 Like

Playing around on the M2 Mac. The scaler Global input seems to retune a wholetone when setting the knob to 1 with scale “default”. This is a little unexpected because for the keys “default” is chromatic.

5v = PBR range for global and note… (it previously was 10v changed in 2.1.1)
neither of these inputs are based on scale…
(both note and global should behave the same, unless I missed something on latest change)

actually, I wonder if I should ditch the pbr range , and just make them v/oct.

Sounds plausible. +/-10 octaves sounds sufficient for most kinds of music and species :slight_smile:

ok, for those following this topic, and the issue on Mac OS 11.7

the issue @NothanUmber was having relates to building on macOS 14.x, and the related compiler/sdk it uses.

we tried with a build Im doing via GitHub which is using macOS 12, and all is ok, so I’ll use GitHub to do future builds.

Ive updated the previous release for this, use previous link to re-download.
(good to do even if it does not affect you, just so we are all on the same version!)

it be useful to track what versions people are testing on… just in case we see other oddities like this.

yeah, Ive not quite sure though… as it means to get the bends you want, you’d need to scale the inputs, which is kind of tedious.