|  Andrew Belt | b5d7a12448 | Make AudioInterface handle devices with 0 inputs or 0 outputs better. Clear engine buffers more aggressively, especially for the primary module. | 4 years ago | 
				
					
						|  Andrew Belt | df68876d16 | Make INTERNAL macro use hidden visibility instead of internal. | 4 years ago | 
				
					
						|  Andrew Belt | 357bd847bf | Rename PRIVATE macro to INTERNAL. | 4 years ago | 
				
					
						|  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 | 86f3658b51 | Add `Exception::Exception(const char* format, ...)` so you can create Exception objects using C format strings. | 4 years ago | 
				
					
						|  Andrew Belt | 9f04e56106 | AudioInterface: Set primary module after instead of before adding to the Engine (WIP). | 4 years ago | 
				
					
						|  Andrew Belt | 90ada5c532 | Add Engine::setSuggestedSampleRate(). Make ReadWriteLock support recursive writes. | 4 years ago | 
				
					
						|  Andrew Belt | 169c80e422 | Use ⌘ instead of Cmd for key command names on Mac. | 4 years ago | 
				
					
						|  Andrew Belt | 4c7c5b1694 | Add auto engine sample rate setting. | 4 years ago | 
				
					
						|  Andrew Belt | e9dee76a41 | Add Port::getOffset() and setOffset(). | 4 years ago | 
				
					
						|  Andrew Belt | 4626dea31f | Use float instead of int for sample rates in audio:: namespace. | 4 years ago | 
				
					
						|  Andrew Belt | b9594bb07b | Use PRId64 for portability of printf format strings on Linux and Windows. | 4 years ago | 
				
					
						|  Andrew Belt | 50ec209578 | Only wait for mouse to move before dragging module if it was just created with the module browser. | 4 years ago | 
				
					
						|  Andrew Belt | fd4479f992 | Use a ~15px dragging threshold when dragging a Module from the Module Browser, so that clicking it makes it stay in the last right-clicked position. Make event framework trigger DragHover before DragMove. | 4 years ago | 
				
					
						|  Andrew Belt | 5bbd32ccac | When Module Browser creates a module, set the ModuleWidget's dragPos to its center, so dragging is more predictable. | 4 years ago | 
				
					
						|  Andrew Belt | 754319c3ce | Add Window::step(). | 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 | f1b4fdce81 | Make logger aware of format string so it gives warnings if format is malformed. | 4 years ago | 
				
					
						|  Andrew Belt | 1fdbf71bb7 | Add PRIVATE macro. | 4 years ago | 
				
					
						|  Andrew Belt | 1927def7e1 | Implement all sorting options to module browser. | 4 years ago | 
				
					
						|  Andrew Belt | ac0588c0f8 | Rewrite module browser's ModelBox to support changing zoom. Add FramebufferWidget::setDirty(). | 4 years ago | 
				
					
						|  Andrew Belt | e2e33c09c6 | Add "moduleUsages", "moduleBrowserSort", and "moduleBrowserZoom" to settings. Make module browser's SortButton and ZoomButton control these settings. | 4 years ago | 
				
					
						|  Andrew Belt | 790e1053cc | Rename system::getTime() to getRuntime(). Add system::getUnixTime(). | 4 years ago | 
				
					
						|  Andrew Belt | 11721cab00 | Add WIP Engine::step() timer. Fix module timer. | 4 years ago | 
				
					
						|  Andrew Belt | a93ebf8e28 | Enable MenuOverlay darkening again. Use MenuOverlay subclass for ModuleBrowser. Consume all keys/buttons in MenuOverlay. | 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 | a5c5cdd302 | Rearrange Library menu items. Change library plugin update period to 15 seconds. | 5 years ago | 
				
					
						|  Andrew Belt | b3d8f4f997 | Delete instead of hide TipWindow (and its overlay) when closing. | 5 years ago | 
				
					
						|  Andrew Belt | f79090407d | Add ui::OptionButton. Replace ShowButton with OptionButton in tip window. Add a few tips. | 5 years ago | 
				
					
						|  Andrew Belt | 847b743148 | Add ModularGrid link to module Info menu. Add more tips to tip window. | 5 years ago | 
				
					
						|  Andrew Belt | 7a500c9c26 | Add tip window. Add "showTipsOnLaunch" and "tipIndex" to settings. | 5 years ago | 
				
					
						|  Andrew Belt | 426b6d20ed | Rename "autosavePeriod" to "autosaveInterval" in settings.json. Auto-hide menu bar when fullscreen, show when hovering the top of the screen. | 5 years ago | 
				
					
						|  Andrew Belt | e9848d6d9c | Add auto-updating of plugins with a 60-second interval. Refactor updating and syncing of plugins. | 5 years ago | 
				
					
						|  Andrew Belt | 3aaca9f90d | Add Widget::getVisibleChildrenBoundingBox(). Scroll ScrollWidget only if content can be scrolled. | 5 years ago | 
				
					
						|  Andrew Belt | 6e35afb053 | Add engine::LightInfo and Module::configLight() helper for configuring the LightInfo. Add LightTooltip for LightWidgets. | 5 years ago | 
				
					
						|  Andrew Belt | f3094a572a | Move app::MenuBar class definition from header to source file. | 5 years ago | 
				
					
						|  Andrew Belt | 18f8283e34 | Rename ui::ScrollBar to Scrollbar. (Wikipedia says "scrollbar" rather than "scroll bar".) | 5 years ago | 
				
					
						|  Andrew Belt | cb65043538 | Add virtual ParamQuantity::toJson() and fromJson() so plugins can override JSON serialization behavior of params. | 5 years ago | 
				
					
						|  Andrew Belt | 8bfa54bbe9 | Add "Library > Check for plugin updates" and "Help > Check for VCV Rack update" menu items. Rename "checkAppUpdates" setting to "autoCheckUpdates".
Make it disable/enable plugin updates in addition to app update. | 5 years ago | 
				
					
						|  Andrew Belt | 77c68c5602 | Fix correctness error in CaseInsensitiveCompare::operator() by rolling my own implementation. | 5 years ago | 
				
					
						|  Andrew Belt | e80beefba4 | Add AudioButton and MidiButton and Component Library subclasses with graphics. | 5 years ago | 
				
					
						|  Andrew Belt | 5e4124f66a | Rename bypassed to bypass everywhere. | 5 years ago | 
				
					
						|  Andrew Belt | f3c8262183 | Make Module always deserialize "id", "leftModuleId", and "rightModuleId". Due to this, make pasting and cloning modules delete these properties from the JSON before `fromJson()` is called. | 5 years ago | 
				
					
						|  Andrew Belt | 06c6590b51 | Implement Module::ExpanderChangeEvent event trigger. | 5 years ago | 
				
					
						|  Andrew Belt | fe9fbf8e90 | Make `Exception` subclass `std::exception` instead of `std::runtime_error`. | 5 years ago | 
				
					
						|  Andrew Belt | 4edd00d855 | Don't use atomic for WeakPtr reference count. | 5 years ago |