Andrew Belt
5f8f9b8e35
Change `bypass` variable name to `bypassed` when appropriate.
4 years ago
Andrew Belt
317b9125b6
Make ReadWriteLock non-recursive and add *_NoLock() methods to Engine as needed.
Split Module::bypass() into isBypass/setBypass().
Add more documentation to Engine methods.
4 years ago
Andrew Belt
2f5ce16ce8
No longer require that a primary Module belongs to the Engine.
4 years ago
Andrew Belt
9f04e56106
AudioInterface: Set primary module after instead of before adding to the Engine (WIP).
4 years ago
Andrew Belt
4e44157d27
Don't write-lock Engine::fromJson() because it only needs it when adding modules and cables, which already has a write-lock.
4 years ago
Andrew Belt
90ada5c532
Add Engine::setSuggestedSampleRate(). Make ReadWriteLock support recursive writes.
4 years ago
Andrew Belt
4c7c5b1694
Add auto engine sample rate setting.
4 years ago
Andrew Belt
f0753792b8
Rename "step" terminology of Engine to "block". Tweak ModuleWidget meter appearance.
4 years ago
Andrew Belt
7003adffe2
Move module stepping code from Engine to Module. Change meter to a time plot.
4 years ago
Andrew Belt
2a1bbf4ae3
Rename system::getRuntime() to getTime().
4 years ago
Andrew Belt
790e1053cc
Rename system::getTime() to getRuntime(). Add system::getUnixTime().
4 years ago
Andrew Belt
b986ff5882
Replace Module Browser sidebar with header. Add multiple tag selection (WIP), zoom (WIP), and sorting options (WIP).
4 years ago
Andrew Belt
11721cab00
Add WIP Engine::step() timer. Fix module timer.
4 years ago
Andrew Belt
7efd063392
Change timestamps from int64_t to double, and define epoch as when `system::init()` is called.
4 years ago
Andrew Belt
36f062e33d
Fix random module/cable ID generation on Windows
4 years ago
Andrew Belt
5e4124f66a
Rename bypassed to bypass everywhere.
4 years ago
Andrew Belt
06c6590b51
Implement Module::ExpanderChangeEvent event trigger.
4 years ago
Andrew Belt
f887faea79
Fix module and cable ID variables that were `int` instead of `int64_t`. Add `Engine::getNumCables()` and `Engine::getCableIds()`.
4 years ago
Andrew Belt
50747839d4
Use randomly-generated 53-bit IDs for Module and Cable.
4 years ago
Andrew Belt
80d08ec15c
Omit duplicate tags in Model.
5 years ago
Andrew Belt
7103404c5a
CV-MIDI: Add back rate limiting to pitch wheel, mod wheel, velocity, and pan. CV-CC and CV-Gate: Add timestamps to generates MIDI messages.
5 years ago
Andrew Belt
7aa8f896a3
Remove rate limiting from CV-MIDI, WIP.
5 years ago
Andrew Belt
abde7d983f
Add Engine::getFrameTime() and getStepDuration().
5 years ago
Andrew Belt
6f7f0cc7b3
Cache modules and cables in engine by ID. Add lock to Engine::reset/randomize/bypassModule(). Remove lock from Engine::get/setParam and get/setSmoothParam.
5 years ago
Andrew Belt
df0f44cf3e
Don't allow setting the Engine's primary module if it is not added to the Engine.
5 years ago
Andrew Belt
b8d47b5378
Add Engine::getNumModules() and getModuleIds() methods.
5 years ago
Andrew Belt
05427d938b
Overhaul threading model for Engine using a shared mutex based design.
5 years ago
Andrew Belt
537b64d011
Remove engine pausing as it no longer makes sense with the new "external stepping" engine architecture.
5 years ago
Andrew Belt
120aafe6d3
Change order of includes to C++ standard headers, library headers, and local project headers.
5 years ago
Andrew Belt
3f83066966
Make global context a thread_local variable. Add contextSet().
5 years ago
Andrew Belt
ca9231e1b3
Rename App to Context and app.hpp to context.hpp. The APP macro is still valid.
5 years ago
Andrew Belt
306e454f0c
Use higher resolution clock for system::getNanoseconds() on Windows.
Ban `long` from codebase. Use int64_t instead.
5 years ago
Andrew Belt
d0098ae7cc
Allow left button to scroll ScrollWidget, so that the rack and other scroll containers can be scrolled with a touch screen.
5 years ago
Andrew Belt
60d2283010
Add timestamp to MIDI message. Make MIDI-* modules wait until a message is `stepFrames` frames old until processing it, improving MIDI stability. Add Engine::getStepFrame, getStepTime, and getStepFrames.
5 years ago
Andrew Belt
5a45c26da6
Add system::getNanoseconds(). Use it instead of std::chrono.
5 years ago
Andrew Belt
538f5589c2
Make headless mode work somewhat.
5 years ago
Andrew Belt
70d527d99a
Test audio. Fix audio deadlock in Engine::fromJson().
5 years ago
Andrew Belt
4a5027ef1c
Add internal struct to Module.
5 years ago
Andrew Belt
c33dc3c842
Rename module disabling to bypassing.
5 years ago
Andrew Belt
cc711b6d2d
Replace module disabling with bypassing using BypassRoute and Module::configBypass().
5 years ago
Andrew Belt
ba820dd802
Add infinity and NaN protection to Cable_step.
5 years ago
Andrew Belt
12fcaa4b08
Move moduleFromJson from engine to plugin namespace. Move Engine mutex lock at the top of Engine::step().
5 years ago
Andrew Belt
61f6d8164d
Add and test secondary module audio interface flushing.
5 years ago
Andrew Belt
032c321fd3
Port change from v1 26bda06eb7
5 years ago
Andrew Belt
6907d53a25
Remove real-time menu item and setting.
5 years ago
Andrew Belt
20a875ff10
Allow random::init() to be called when already initialized.
5 years ago
Andrew Belt
0dbce1683d
Work on PortTooltips.
5 years ago
Andrew Belt
99b17727ab
WIP:
- Make ParamWidget hold module/paramId instead of paramQuantity.
- Add configInput/configOutput.
- Add engine::PortInfo.
- Avoid calling particular events when cursor is locked.
- Add PortTooltip.
5 years ago
Andrew Belt
4936df2c0b
Move ParamWidget/Knob/Switch properties to ParamQuantity. Fix static linking on Linux.
5 years ago
Andrew Belt
e4b6056ded
Massive WIP v2 overhaul:
- Add Engine::fromJson which can be called without the GUI at all.
- Make RackWidget::fromJson attach itself to existing Engine state. However, once attached, they own their Engine objects (Module, Cable).
- Remove Engine thread. Now Engine must be stepped by other threads, such as the audio thread. This is fantastic because there is no longer a mutex lock every audio buffer.
- Add concept of the "primary module", which is allowed to call Engine::step().
- Add many Module events.
5 years ago