Andrew Belt
872aa0397d
No need for engineBarrier to be a HybridBarrier since yield() is not called.
2 months ago
Andrew Belt
617f6ddafd
Refactor all Barrier implementations. Explicitly use appropriate memory ordering everywhere. Use __yield() on ARM64.
2 months ago
Andrew Belt
ad30d3a5c2
Move English strings to translation file.
5 months ago
Andrew Belt
2995ed74ff
When launching engine worker threads, inherit main thread's scheduling policy and priority instead of setting manually.
6 months ago
Andrew Belt
3ed1e2c373
Set EngineWorker thread priority on Windows.
7 months ago
Andrew Belt
420dd84a8a
Use pthread API instead of C++ threads for EngineWorker.
7 months ago
Andrew Belt
f659b0432e
Global random state no longer needs to be initialized for each Engine thread.
7 months ago
Andrew Belt
42ff27175d
Engine: Sort `cables` by (inputModule, inputId) tuple. Iterate `cables` by groups of inputs instead of map of vectors. Use non-stacked input cable stepping algorithm if input is not stacked.
1 year ago
Andrew Belt
fc64b13fe8
Clear engine before instantiating modules and before locking in Engine::fromJson(). Fixes ParamHandles from being removed immediately after instantiated modules add them.
1 year ago
Andrew Belt
b04beb9680
Dispatch ExpanderChangeEvent when removing modules.
1 year ago
Andrew Belt
3464eabb4d
Don't assert that a similar cable exists in Engine::addCable() since Engine handles it fine. App code should enforce it.
1 year ago
Andrew Belt
8f092af042
Fix Engine::removeCable() not updating inputCablesCache.
1 year ago
Andrew Belt
9314d7a527
Assert that similar cable does not exist in Engine::addCable()
1 year ago
Andrew Belt
c4a5c1016c
Allow multiple Cables per Input in Engine. Cache list of Cables connected to each Input.
1 year ago
Andrew Belt
840e184d7e
Rename system::initCpuFlags() to system::resetFpuFlags(). Implement it on ARM64.
1 year ago
Andrew Belt
20eafc98ff
No need to save/restore CPU flags in Engine::stepBlock() anymore.
1 year ago
Andrew Belt
e2a4a6209d
Add system::initCpuFlags(). Call it by all new threads.
1 year ago
Andrew Belt
123da6cd83
Initialize CPU flags for Engine on ARM64.
1 year ago
Andrew Belt
bb8f70c04e
When loading a patch or autosave, if modules are unavailable, prompt user to close Rack and view them on the VCV Library.
1 year ago
Andrew Belt
ac92bacd55
Zero input port values when disconnected, but not outputs.
1 year ago
Andrew Belt
e6744e5c3e
Don't lock inside Engine::fromJson() until all modules are instantiated. Fix recursive lock when calling getModule().
1 year ago
Andrew Belt
fb531c5a66
Make engine step modules first, then step cables in Engine::stepFrame().
1 year ago
Andrew Belt
e67be6b3dd
Make Engine::fromJson() lock in entire method, so modules and cables aren't added on different engine frames. Make Cable::fromJson() call non-locking Engine methods.
1 year ago
Andrew Belt
d70372535a
Add Engine::addModule_NoLock() and addCable_NoLock().
1 year ago
Andrew Belt
d62adc6226
Don't zero port values when disconnected. Refactor Engine by removing Engine_updateConnected().
1 year ago
Andrew Belt
613f926c35
Change `side` argument from bool to uint8_t in Module::getExpander() and Module::ExpanderChangeEvent.
1 year ago
Andrew Belt
4a904d4950
Rename ParamQuantity::set/getDirectValue() to set/getImmediateValue().
Use setImmediateValue() when appropriate in ParamQuantity and SwitchQuantity, such as in reset(), randomize(), and setDisplayValue().
Add doc comments to ParamQuantity.
2 years ago
Andrew Belt
cdaea345d3
Make ParamQuantity::set/getValue() set/get the target value of engine smoothing instead of the value directly. Add ParamQuantity::set/getDirectValue(). Deprecate ParamQuantity::set/getSmoothValue().
2 years ago
Andrew Belt
4905496eed
Fix all memory leaks caused by json_array_append() and json_object_set().
2 years ago
Andrew Belt
6eaf11ed7a
Remove Engine::setFrame(). Guarantee that Engine frame only increases by 1 with no jumps.
2 years ago
Andrew Belt
c12f690786
Remove "v" from all version messages.
2 years ago
Andrew Belt
08cd572d51
Allow building on ARM64. Only Mac tested, and deps not tested.
2 years ago
Andrew Belt
8e7acf9b74
Log all calls to Model::createModule() and createModuleWidget().
3 years ago
Andrew Belt
e0a78e0a27
Use odd prime number for port frame divider so plug lights get a more diverse statistical sample of voltages.
3 years ago
Andrew Belt
e88c39c426
Rename ReadWriteMutex to SharedMutex. Use shared/exclusive terminology instead of read/write.
3 years ago
Andrew Belt
eb9a476105
Move ReadWriteMutex from Engine.cpp to new mutex.hpp header.
3 years ago
Andrew Belt
ffe340f4b2
Use %lld with long long type instead of PRId64 for printf.
3 years ago
Andrew Belt
a98256c6f4
Dispatch Module::SampleRateChange event when the Module is added to the engine.
3 years ago
Andrew Belt
0bdebebfae
Make Engine_updateExpander() non-locking.
3 years ago
Andrew Belt
d7aa204bc7
Copy patch storage dir when cloning individual module.
3 years ago
Andrew Belt
7bd26deefc
Don't display negative meter measurements.
3 years ago
Andrew Belt
d017010925
Subtract call time of system::getTime() itself when measuring Module::process() for meter.
3 years ago
Andrew Belt
985b996d76
Use much faster system::getTime() implementation on Mac.
3 years ago
Andrew Belt
0fd6d8a858
Fix deadlock in MIDI Map dataFromJson() and onReset() by creating a few Engine::*_NoLock() methods and calling them. Make Engine::updateParamHandle() write-lock instead of read-lock.
3 years ago
Andrew Belt
08e1f9a954
Add port name and "Duplicate/create new cable" to port context menu.
3 years ago
Andrew Belt
1f0e27749e
Allow SwitchQuantity first index to start at value other than 0.
3 years ago
Andrew Belt
4567cc4220
Master audio module (the module that clocks Engine) makes more sense.
3 years ago
Andrew Belt
95ed0bb5c5
Fix module paste key command. Fix crash when deleting module selection.
3 years ago
Andrew Belt
f1635cd96b
Add Module::jsonStripIds().
3 years ago
Andrew Belt
90d395ae8b
Add Quantity::toScaled() and fromScaled(). Clean up Quantity and ParamQuantity.
3 years ago