Compare commits

...

435 Commits
time ... main

Author SHA1 Message Date
Ben Niemann ef5527be03 Move flatpy to a separate repo and include it as a submodule. 2022-01-02 04:07:45 +01:00
Ben Niemann 26f42e2e70 Hide the --shell flag. 2022-01-02 03:03:12 +01:00
Ben Niemann ae6f7200fe Do not package libjack in appimage.
Must use the version from the host, which matches the running jackd.
See https://musescore.org/en/node/105361#comment-783841
2022-01-02 03:03:02 +01:00
Ben Niemann 91a702bc1d Fix logging. 2022-01-01 13:10:33 +01:00
Ben Niemann b5113590b3 Flag to open shell in appimage for debugging. 2022-01-01 13:09:50 +01:00
Ben Niemann 66275ca434 Fix typo. 2022-01-01 02:51:40 +01:00
Ben Niemann 73d7ffec63 Tweak .projectile 2022-01-01 02:50:55 +01:00
Ben Niemann ee1a2d49af Move subprocess from nix to a submodule. 2022-01-01 02:50:50 +01:00
Ben Niemann c1954a4032 Move dep_sort from nix to a submodule. 2022-01-01 02:30:58 +01:00
Ben Niemann 1d5ebaa58e Update comment. 2021-12-31 09:17:00 +01:00
Ben Niemann fe0428e1cd Fix lint. 2021-12-31 04:52:01 +01:00
Ben Niemann f44e3edbd4 meld messed with my python. don't! 2021-12-31 04:46:38 +01:00
Ben Niemann 4bd251ec49 Tweak QNanoPainter build. 2021-12-31 04:28:56 +01:00
Ben Niemann 575979796a ADSR: visualize envelope and track current position. 2021-12-31 04:01:47 +01:00
Ben Niemann d9f344e4e0 Support faust nodes with custom C++ code. 2021-12-31 03:59:15 +01:00
Ben Niemann 39b372104b Add QML component to draw simple plots. 2021-12-31 03:57:47 +01:00
Ben Niemann a7afb8b878 Add QNanoPainter as a submodule and add it to the build script. 2021-12-31 03:46:27 +01:00
Ben Niemann cc2405a358 Export logging interface to QML. 2021-12-31 03:41:21 +01:00
Ben Niemann d7e992ec3f Support internal ports, which don't show up on the UI. 2021-12-31 00:11:41 +01:00
Ben Niemann 10ac9eabe7 Fix duplicate rule for noisicaa.svg icon. 2021-12-31 00:10:45 +01:00
Ben Niemann beaa46d9ec Fix port overrides for faust output ports. 2021-12-31 00:10:26 +01:00
Ben Niemann ab9511e2f1 Feed Qt logs into Python's logging system. 2021-12-30 11:34:50 +01:00
Ben Niemann 14adb0777f Fix crash when restarting jack backend and properly recreate jack connections. 2021-12-29 00:32:46 +01:00
Ben Niemann 86030335cb Add plausible stats snippet to website. 2021-12-27 03:48:33 +01:00
Ben Niemann 7ada599cb4 Announce noisicaä reloaded. 2021-12-27 03:35:55 +01:00
Ben Niemann b6e8ffe564 Reanimate website sources. 2021-12-27 02:39:53 +01:00
Ben Niemann 9181ae4118 Remove some lint. 2021-12-27 01:48:29 +01:00
Ben Niemann d132c430c8 Defer engine start until window is open, control master volume, transition audio in on start. 2021-12-27 01:43:05 +01:00
Ben Niemann 62c28181a8 Factor out some common util classes. 2021-12-26 00:44:59 +01:00
Ben Niemann daea30ac22 Add 'Step Sequencer' node. 2021-12-26 00:15:40 +01:00
Ben Niemann e0ad86f894 Send (flatbuffer) messages from model/UI to engine nodes. 2021-12-26 00:13:53 +01:00
Ben Niemann daa8d5752b Support extra (non-Node) classes in model modules. 2021-12-26 00:04:04 +01:00
Ben Niemann 8a7d8afdfa Add ADSR envelope. 2021-12-25 01:36:08 +01:00
Ben Niemann 053670aaaf Fix faust UIs. 2021-12-25 01:31:58 +01:00
Ben Niemann f121171d74 'LFO' node. 2021-12-25 01:31:28 +01:00
Ben Niemann 53f1f14abe Support text base nentry fields. 2021-12-24 02:35:16 +01:00
Ben Niemann aca7206aeb Make passthru actually pass the signal thru. 2021-12-24 02:34:44 +01:00
Ben Niemann 2ab4c6ea1b 'Sample & Hold' node. 2021-12-24 01:22:23 +01:00
Ben Niemann 3ccbc3a7a5 'Clock' node to generate pulses in BPM units. 2021-12-24 00:50:42 +01:00
Ben Niemann a6831d6569 Assorted tweaks to appimage scripts. 2021-12-23 01:01:25 +01:00
Ben Niemann 7bd5a8624e Install .desktop file. 2021-12-23 00:41:53 +01:00
Ben Niemann 693e21be07 Properly setup application icon (even if I don't have one yet). 2021-12-23 00:41:14 +01:00
Ben Niemann 4f7582a4ef Remove another trace of protobuf. 2021-12-23 00:40:21 +01:00
Ben Niemann 40d1b808f0 Silence some more compiler warnings. 2021-12-22 03:19:16 +01:00
Ben Niemann ef2785c720 Script to do the most basic smoke testing in various docker images. 2021-12-22 03:18:36 +01:00
Ben Niemann 1d8de95ea6 New AppImage build script using Docker.
Using a "regular" (non-Nix) build script under Debian, and appimage-builder to include all
dependencies in the AppImage.
2021-12-22 02:35:26 +01:00
Ben Niemann 660d935bdc Adjust default paths when running in AppImage. 2021-12-21 23:11:07 +01:00
Ben Niemann edf3864f60 Do not build a dynamic lib for each node. 2021-12-21 23:08:59 +01:00
Ben Niemann eb3b00f98f Fix visibility of global symbols in SWH plugins. 2021-12-21 23:03:21 +01:00
Ben Niemann bf7b2e357e Use __attribute__((constructor)) to register classes. 2021-12-21 22:59:57 +01:00
Ben Niemann 352375bc1e Give dynamic libraries proper SONAMEs. 2021-12-21 22:58:31 +01:00
Ben Niemann 6cf447ca31 Fix linker flags. 2021-12-21 22:19:45 +01:00
Ben Niemann 8dfd585e1a Remove unused dependency on protobuf. 2021-12-21 05:01:16 +01:00
Ben Niemann afd10b2247 Compile QML files for syntax checking during build. 2021-12-20 03:59:27 +01:00
Ben Niemann 08c31ed695 Clip audio output to [-1.0, 1.0]. 2021-12-19 17:10:48 +01:00
Ben Niemann a75039c9be Configure project dialog and change sample rate and block size. 2021-12-19 01:55:16 +01:00
Ben Niemann 7e86bb9c7b Rewrite jack output and resampling logic. 2021-12-19 00:48:41 +01:00
Ben Niemann a90d780e6e Timeout when process_block() gets never called. 2021-12-19 00:22:55 +01:00
Ben Niemann 0512552bc7 Fix memory leak and double free crash. 2021-12-19 00:22:14 +01:00
Ben Niemann 20549ae78d More in-depth testing of jack IO. 2021-12-18 02:22:53 +01:00
Ben Niemann b19d6d2891 Test JackIOPorts, fix memory corruption bug. 2021-12-17 22:01:15 +01:00
Ben Niemann 1e54cba975 Initial test for BackendJack. 2021-12-17 19:39:19 +01:00
Ben Niemann 95cc729325 Set jack server name via BackendSettings. 2021-12-17 19:38:36 +01:00
Ben Niemann e0bcc8a5d9 Decouple backends from EngineImpl. 2021-12-17 18:23:15 +01:00
Ben Niemann 3c94e00356 Option to only build, but not run tests.
E.g. when running tests outside of waf.
2021-12-17 18:14:18 +01:00
Ben Niemann 5b5823dc87 Remove the type argument from connect_ports() 2021-12-17 17:54:13 +01:00
Ben Niemann ca13f6082c Remove debug plugin. 2021-12-17 02:12:16 +01:00
Ben Niemann 79a9ac8dce Run lint tests before merging to main. 2021-12-17 02:10:05 +01:00
Ben Niemann 077c1bc842 Make everything lint free. 2021-12-17 02:09:11 +01:00
Ben Niemann 1af57a6b78 Make noisicaa.model lint free. 2021-12-16 23:45:06 +01:00
Ben Niemann f908a2aaa8 flatpy: fix type errors in generated code. 2021-12-15 19:21:52 +01:00
Ben Niemann 1008e43d9d Remove even more lint. 2021-12-15 18:05:33 +01:00
Ben Niemann c762401dea Remove some more lint. 2021-12-15 16:54:32 +01:00
Ben Niemann 72cfdaca82 Add typing stubs to PySide2 (and placeholder for flatbuffers). 2021-12-15 16:53:50 +01:00
Ben Niemann 8db1789961 Improve mypy test output. 2021-12-15 16:04:03 +01:00
Ben Niemann ff42a71ae7 Remove some lint. 2021-12-15 15:28:38 +01:00
Ben Niemann 7bc17923f3 Tune logging during tests. 2021-12-15 15:13:56 +01:00
Ben Niemann 21b8f37453 Add "Open recent" submenu. 2021-12-14 20:36:22 +01:00
Ben Niemann 81529fed18 Window to show current engine program. 2021-12-14 19:36:29 +01:00
Ben Niemann 5d4bd8a457 Properly initialize control values for AUDIO ports. 2021-12-14 17:02:01 +01:00
Ben Niemann d9b7a9d177 Remove ARATE_CONTROL type, rename KRATE_CONTROL to CONTROL, remove support for multiple port types. 2021-12-13 18:17:17 +01:00
Ben Niemann 148d1e2de6 Process a single block for every node. 2021-12-11 02:21:26 +01:00
Ben Niemann dfccf4261c Optionally run tests under GDB. 2021-12-11 01:48:06 +01:00
Ben Niemann 8267055049 Disable some more SWH plugins, which crash when used. 2021-12-11 01:47:36 +01:00
Ben Niemann c7ec36c4b3 Run a basic smoke test on all nodes. 2021-12-11 01:47:20 +01:00
Ben Niemann 7541f949aa Move common test fixtures into conftest.py 2021-12-11 01:40:24 +01:00
Ben Niemann c678705cdd Also wrap the UI registry in a class. 2021-12-11 01:39:42 +01:00
Ben Niemann 6d5b64236f Move all code from <BaseObject children>.__init__ to created()/setup(). 2021-12-10 23:50:23 +01:00
Ben Niemann 27d27f865d Fix crash on shutdown. 2021-12-10 23:49:31 +01:00
Ben Niemann 1a9afd36b8 Fix crash when inserting new sink node. 2021-12-10 19:22:04 +01:00
Ben Niemann 09f48e06b8 Make appimage work (at least on my system). 2021-12-10 00:53:11 +01:00
Ben Niemann 5e4209c2be Fix missing UIs for faust nodes. 2021-12-10 00:52:52 +01:00
Ben Niemann f4aba1b7d4 Tweak syntax 2021-12-10 00:52:39 +01:00
Ben Niemann fa438fa38d Support control output buffers. 2021-12-09 22:11:02 +01:00
Ben Niemann 9599655046 Make it install properly under nix. 2021-12-09 21:59:29 +01:00
Ben Niemann 7427ecc872 Fix building under nix 2021-12-08 23:42:59 +01:00
Ben Niemann 04d011fe32 Fix build ordering issue. 2021-12-08 23:34:54 +01:00
Ben Niemann f224c6c1b0 Merge branch 'main' into dev 2021-12-08 23:14:39 +01:00
Ben Niemann 393c3b3b99 Clip list of nodes 2021-12-08 17:40:48 +01:00
Ben Niemann cc7d194bc9 Support mode SWH plugins. 2021-12-08 16:19:31 +01:00
Ben Niemann b3c22949a0 Add some more SWH plugins. 2021-12-08 02:47:32 +01:00
Ben Niemann 34b5806370 Import SWH first module. 2021-12-08 01:20:23 +01:00
Ben Niemann 6c7bbf77e1 Script to merge dev branch into main. 2021-12-07 17:17:38 +01:00
Ben Niemann 0fb349ef97 Sink node can connect to any jack client.
- Replace static two output buffers by a map keyed by sink node id
- Sink model node stores selected device and ports.
- Sink engine node allocates io buffers and ask backend to connect to specific jack ports.
- Sink UI node lets user pick the jack client and ports.
2021-12-07 17:12:16 +01:00
Ben Niemann b1afecc98c Fix test. 2021-12-07 17:05:53 +01:00
Ben Niemann 0daa0e7253 Remove BackendSettings.connect_ports 2021-12-06 19:43:00 +01:00
Ben Niemann 2eab27880d Emit PropertyListSet changes when setting list elements. 2021-12-06 18:53:30 +01:00
Ben Niemann 32a44d787d Improved Menu QML type. 2021-12-06 18:48:45 +01:00
Ben Niemann 71013132ca Move initial engine change message into Node.initialEngineChanges(). 2021-12-05 18:30:59 +01:00
Ben Niemann 7424fbda77 Add model and UI to sink node to select output device and ports. 2021-12-05 00:44:29 +01:00
Ben Niemann b370064ab0 Assorted tweaks. 2021-12-05 00:43:46 +01:00
Ben Niemann 823b93b002 Defer creation of GraphView. 2021-12-05 00:42:59 +01:00
Ben Niemann 50fe9298b5 Add pytest-qt 2021-12-05 00:42:38 +01:00
Ben Niemann dbe4e006ac Factor out a base App class, which can be used in tests. 2021-12-05 00:41:55 +01:00
Ben Niemann ec8e1aac1e Move the model registry into a class, instead of using global state. 2021-12-04 17:59:49 +01:00
Ben Niemann ce94732538 UI keeps list of devices as reported by engine. 2021-12-04 17:45:53 +01:00
Ben Niemann 1d538f6fc8 Jack backend posts list of devices (other jack clients and their ports) back to UI. 2021-12-04 17:41:51 +01:00
Ben Niemann 99504a0d94 Defer creating the QML component.
Otherwise the node might be accessed, before all initializers were run.
2021-12-04 17:34:46 +01:00
Ben Niemann b9bce2f5b7 Fix GraphNode.__str__(). 2021-12-04 17:34:12 +01:00
Ben Niemann bc54d083bf flatpy: Fix code generation when imports are present. 2021-12-04 17:33:34 +01:00
Ben Niemann e53481fa20 Separate BaseObject.deserialize() method and created() hook. 2021-12-04 17:32:47 +01:00
Ben Niemann 68f26a4c90 Fix faust compilation error. 2021-12-02 19:01:47 +01:00
Ben Niemann ea665af763 Rename EVENTS port type to MIDI. 2021-12-02 19:01:29 +01:00
Ben Niemann 479507dacb Add VCO node, support nentry faust controls. 2021-12-02 16:30:11 +01:00
Ben Niemann 717bc8bf8a Simplify declaration of port types. 2021-12-01 17:56:29 +01:00
Ben Niemann cf0d9c7321 Give faust in-/output ports default names. 2021-12-01 17:49:36 +01:00
Ben Niemann 28ebe490b5 Apply overrides from description to generated UIs for faust nodes. 2021-12-01 17:40:09 +01:00
Ben Niemann 6ca83e8d5c Bugfix: Context menu was confused after deleting connection. 2021-12-01 16:42:09 +01:00
Ben Niemann 74d3f747da Show port names when hovered. 2021-11-30 17:17:05 +01:00
Ben Niemann 0f0cd3f99c Initial faust to QML ui generator. 2021-11-30 13:22:40 +01:00
Ben Niemann 7cb00221f7 Don't hardcode sample rate. 2021-11-30 11:46:39 +01:00
Ben Niemann ecefbf57df Show "No trigger" message. 2021-11-30 11:35:47 +01:00
Ben Niemann da9e451a59 Add pause mode, tweak layout. 2021-11-29 19:34:41 +01:00
Ben Niemann a670cafa1f Extend the y range a bit. 2021-11-29 17:24:06 +01:00
Ben Niemann 4d4482e879 Set colors based on theme. 2021-11-29 17:13:41 +01:00
Ben Niemann cf8d9cd9ee Render per sample min/max range, properties for appearance. 2021-11-29 17:07:00 +01:00
Ben Niemann 09eec94cf7 Add labels. 2021-11-29 14:02:43 +01:00
Ben Niemann 3f5345119b Render proper grid. 2021-11-28 18:32:15 +01:00
Ben Niemann a810170594 Use a simple black background. 2021-11-28 16:59:43 +01:00
Ben Niemann 5eb9d56cf6 Add some checks for UI classes. 2021-11-28 16:31:39 +01:00
Ben Niemann b343b1318e Simplify build scripts for node lib. 2021-11-28 16:28:13 +01:00
Ben Niemann f7badd7b7f Add custom model class for oscilloscope to store its settings. 2021-11-28 16:15:10 +01:00
Ben Niemann 40b0b6951e Forgot to add file. 2021-11-28 16:14:49 +01:00
Ben Niemann 37d08e05c9 Support custom model classes for nodes. 2021-11-28 16:14:46 +01:00
Ben Niemann 056525cbf4 Create registry of model classes, use fqn as type of serialized classes. 2021-11-28 16:12:17 +01:00
Ben Niemann 5acb2f962d Rename model.Node to GraphNode 2021-11-28 16:09:53 +01:00
Ben Niemann 02f5988eb3 Fix tests. 2021-11-28 15:53:57 +01:00
Ben Niemann 54ef8676df Add BaseObject.debugInfo() method. 2021-11-28 14:38:06 +01:00
Ben Niemann 934fd7dd60 Fix sine description. 2021-11-28 14:36:39 +01:00
Ben Niemann 53148f92c9 Rename NodeDescription::class_uri to audio_class_uri. 2021-11-28 14:36:11 +01:00
Ben Niemann 400d1729b4 Get rid of the fancy shader stuff for the oscilloscope line. 2021-11-27 15:16:41 +01:00
Ben Niemann 37858f1b33 Initial oscilloscope node. 2021-11-27 13:41:56 +01:00
Ben Niemann 01d4a8183d flatpy: support vector of floats. 2021-11-27 13:37:01 +01:00
Ben Niemann ad420644b0 don't hardcode nixGL. 2021-11-26 12:01:18 +01:00
Ben Niemann cb40d2f07f Generate ports from dsp metadata. 2021-11-26 09:04:43 +01:00
Ben Niemann ac30406780 Support static faust node and add VCA. 2021-11-26 07:41:14 +01:00
Ben Niemann 2bf05127a7 Tweak build rule. 2021-11-25 18:34:14 +01:00
Ben Niemann d326577cd2 Read node descriptions from disk. 2021-11-25 18:24:00 +01:00
Ben Niemann 1d6ed93fea Fix typo (where did that come from?) 2021-11-25 18:21:57 +01:00
Ben Niemann 528d33b86e flatpy: fix handling of enum fields in CreateXXXFromJSON 2021-11-25 18:21:47 +01:00
Ben Niemann b269ecc361 flatpy: Generate CreateXXXFromJSON functions. 2021-11-25 14:50:11 +01:00
Ben Niemann 2a95bd789c Larger area for clicking on ports. 2021-11-25 14:00:34 +01:00
Ben Niemann c07dbf6c96 Improve list of possible target ports for new connection. 2021-11-25 13:57:19 +01:00
Ben Niemann ec7ee215ff Track number of connections to/from ports. 2021-11-25 13:20:22 +01:00
Ben Niemann dbbeddf86b Move higher level methods to model. 2021-11-25 13:20:00 +01:00
Ben Niemann 09663157d6 Add glow to possible target ports when dragging connection. 2021-11-25 12:47:59 +01:00
Ben Niemann 5d2d2a1eda Flatbuffers return proper objects for table or vector of table fields. 2021-11-25 12:18:25 +01:00
Ben Niemann 33dd2a276a Set initial control value from port description. 2021-11-25 11:02:00 +01:00
Ben Niemann 8d49960023 Color ports based on type. 2021-11-25 10:48:31 +01:00
Ben Niemann 3d7a45766b Pipe control value changes from model to engine. 2021-11-25 10:39:28 +01:00
Ben Niemann eb55db5867 Create model object for Node ports. 2021-11-25 09:52:16 +01:00
Ben Niemann 295829ae14 Fix removing node message listener. 2021-11-25 09:49:40 +01:00
Ben Niemann c7010b4f82 flatpy: Fix Vector[enum] 2021-11-25 09:49:00 +01:00
Ben Niemann c30807c463 Use control value for unconnected krate control input ports. 2021-11-24 17:21:55 +01:00
Ben Niemann ac886ebc34 Drop the Wrapper suffix. 2021-11-24 12:57:47 +01:00
Ben Niemann 22b0a6fdf4 Add labels and support horizontal orientation for VUMeter. 2021-11-24 12:52:20 +01:00
Ben Niemann c7b1668bc4 Bring back the VUMeter node. 2021-11-24 10:05:17 +01:00
Ben Niemann 9e476df44f Create a module with generic QML components.
Start with a partially reimplemented VUMeter.
2021-11-24 10:03:31 +01:00
Ben Niemann b32a56097d Fix payload type for node message listeners. 2021-11-24 08:00:12 +01:00
Ben Niemann c8e38cb105 Let UI nodes have custom classes and body QML. 2021-11-24 07:48:01 +01:00
Ben Niemann e95e005e24 Fix test. 2021-11-24 06:27:02 +01:00
Ben Niemann 40f250a6da Engine nodes can push messages to interested listeners. 2021-11-24 06:08:02 +01:00
Ben Niemann 5ca6a35383 Automatically set node name. 2021-11-23 15:53:36 +01:00
Ben Niemann a03fe0a287 Standardize filenames for nodes. 2021-11-23 15:48:14 +01:00
Ben Niemann 6e2a312891 Fix Ok button in Insert Node dialog. 2021-11-23 14:51:18 +01:00
Ben Niemann be8df96e35 Fix deleting node, minimap. 2021-11-23 14:41:34 +01:00
Ben Niemann 0fd9b425a2 All of noisicaa.ui is QML. 2021-11-23 13:38:37 +01:00
Ben Niemann fdc075cec1 Save graph view state in project. 2021-11-23 13:26:42 +01:00
Ben Niemann d7a17f0643 Persist window geometry. 2021-11-23 13:10:07 +01:00
Ben Niemann c580b5d2d3 Ask when closing modified project. 2021-11-23 12:36:12 +01:00
Ben Niemann 58bce32a5e Implement new project. 2021-11-23 12:03:59 +01:00
Ben Niemann eb2985be30 Make window owned by app and reuse when opening a new project. 2021-11-23 11:58:16 +01:00
Ben Niemann 2e2a1d42c5 Always clear output buffers, to avoid noise when program fails to write anything out. 2021-11-23 11:57:16 +01:00
Ben Niemann 48dbcd3ad3 Open and Save as dialogs. 2021-11-23 11:43:29 +01:00
Ben Niemann e4f359495b Tweak projectile-project-run-cmd 2021-11-23 11:41:15 +01:00
Ben Niemann 9ade76a9c8 Delete highlighted connections. 2021-11-23 10:18:28 +01:00
Ben Niemann d31f7f8068 Use ui_base properties. 2021-11-23 10:03:02 +01:00
Ben Niemann 970305eee2 Setting QML style and Material theme, variant. 2021-11-23 09:40:22 +01:00
Ben Niemann 724f8bf3d8 Fix QML2_IMPORT_PATH 2021-11-23 07:46:49 +01:00
Ben Niemann 324b4ee3f3 New settings dialog. 2021-11-23 07:46:22 +01:00
Ben Niemann b9acaca9b8 Enable oversampling again. 2021-11-22 15:42:34 +01:00
Ben Niemann fd2b6b3f92 Reimplement context menu for graphview, incl. node selection dialog. 2021-11-22 15:42:23 +01:00
Ben Niemann 49511e4516 Context menu for nodes and make rename, set color and delete work again. 2021-11-22 13:36:16 +01:00
Ben Niemann 2695bd5aee Make the graph view (mostly) work again. 2021-11-22 12:57:29 +01:00
Ben Niemann 693cdd0f6e Start turning the app into pure Qml. 2021-11-22 11:50:36 +01:00
Ben Niemann 0b6f151885 Use a 'icons:' prefix to load icon files. 2021-11-22 08:25:51 +01:00
Ben Niemann 6df396ef43 Move material icons to separate directory and add README with license information. 2021-11-22 06:14:45 +01:00
Ben Niemann e07c71fb16 Update README for the new nix world. 2021-11-22 05:58:11 +01:00
Ben Niemann 50d6be3954 Cleanup top-level directory. 2021-11-22 04:35:14 +01:00
Ben Niemann b2ea8b14bf flatpy: Object keep reference to their underlying buffer. 2021-11-21 17:53:08 +01:00
Ben Niemann dfa0b42591 Tweak .projectile 2021-11-21 17:50:32 +01:00
Ben Niemann f5cb9d338b Basic render thread load monitoring. 2021-11-21 17:49:45 +01:00
Ben Niemann 88fed1bde2 Show grid and snap nodes to grid. 2021-11-21 16:51:03 +01:00
Ben Niemann d7349edf99 Pipe QML engine warnings through logging. 2021-11-21 16:50:36 +01:00
Ben Niemann 1b58131fc6 Fix SVG support. 2021-11-21 16:09:25 +01:00
Ben Niemann 39f4288c62 Highlight hovered connection, delete via context menu. 2021-11-21 15:40:54 +01:00
Ben Niemann d84a60a7a7 Fix OpCodeSine. Used incorrect buffer index. 2021-11-21 15:39:50 +01:00
Ben Niemann f5b88bf3ab Add simple sine generator node. It makes noise! 2021-11-21 13:58:16 +01:00
Ben Niemann 1d76ab8345 Do not create the same connection again. 2021-11-21 13:23:18 +01:00
Ben Niemann 272f80e976 Implement disconnect_port. 2021-11-21 13:19:22 +01:00
Ben Niemann d5ab96002f Render ports, drag to create connections. 2021-11-21 13:03:38 +01:00
Ben Niemann 7ad4001e8c flatpy: handle Vector[Obj] 2021-11-21 12:58:41 +01:00
Ben Niemann 45132c14b9 Get node description from NodeDB. 2021-11-21 09:52:34 +01:00
Ben Niemann 12aaa83c32 Python bindings for NodeDB and add insert node widget. 2021-11-21 09:20:23 +01:00
Ben Niemann de8b09dfcd Fix test. 2021-11-21 07:10:43 +01:00
Ben Niemann e77d087558 Make cpp file generated by cython depend on the pxd, if it exists. 2021-11-21 07:09:59 +01:00
Ben Niemann 61c281a9dd Create the QQmlEngine in python, so it gets destroyed first.
Otherwise it gets destroyed much later and sees QML properties getting reset to null, which triggers
a whole bunch of warning messages.
See https://bugreports.qt.io/browse/QTBUG-81247
2021-11-21 07:08:06 +01:00
Ben Niemann 3aa5741e2a Add selection box, move selected nodes, moves canvas with middle mouse. 2021-11-21 05:30:36 +01:00
Ben Niemann 2de7434dca Basic selection support. 2021-11-21 04:35:59 +01:00
Ben Niemann ab54b8077f Fix header visibility. 2021-11-21 04:35:11 +01:00
Ben Niemann ebaa91a2e0 Persist window and view state. 2021-11-21 03:38:45 +01:00
Ben Niemann 4fcbe75823 Delete notes via icon and context menu. 2021-11-20 15:27:49 +01:00
Ben Niemann 8d48825cdb Show node title in tooltip, if header is not visible. 2021-11-20 14:01:05 +01:00
Ben Niemann dab3771cf6 Rename nodes. 2021-11-20 13:47:45 +01:00
Ben Niemann e75a10b0a0 Pass wrapper instance to qml as initial property, not via context. 2021-11-20 12:18:07 +01:00
Ben Niemann a796fc72f6 Colorize nodes. 2021-11-20 12:17:33 +01:00
Ben Niemann cb7108cb1c Fix cursor shape on title bar/resize handle. 2021-11-20 09:56:58 +01:00
Ben Niemann 8331bbe661 Drag area covers whole node, if header is not visible. 2021-11-20 08:50:28 +01:00
Ben Niemann 72d8bcf857 Trigger context menu. 2021-11-20 08:44:35 +01:00
Ben Niemann 3140e3d513 Make inactive nodes slightly transparent. 2021-11-20 06:34:14 +01:00
Ben Niemann 15c33d18dd Fix rendering issue. 2021-11-20 06:34:03 +01:00
Ben Niemann b14459b597 Render connections. 2021-11-20 05:49:47 +01:00
Ben Niemann 71b2f32606 Add the minimap. 2021-11-20 04:07:37 +01:00
Ben Niemann c3c80a2f2b Double drop the shadow. 2021-11-19 11:20:29 +01:00
Ben Niemann 184a1ecec4 Hide title and resize handle for small nodes. 2021-11-19 10:39:33 +01:00
Ben Niemann afb28e7e56 Do not scale the canvas itself, but recompute the visible node rects. 2021-11-19 10:15:27 +01:00
Ben Niemann b2518485b9 Decouple GraphNode from GraphView. 2021-11-19 09:54:26 +01:00
Ben Niemann f463751f34 Only update Node.rect when mouse actually moved. 2021-11-19 09:53:58 +01:00
Ben Niemann 5f5c20adf4 Add some dummy node body. 2021-11-19 09:03:45 +01:00
Ben Niemann aa13f433d3 Store node rect in model, tracking moving/resizing as commands. 2021-11-19 08:24:13 +01:00
Ben Niemann f83a390fed Use the fancy node box from the prototype. 2021-11-19 08:00:46 +01:00
Ben Niemann 5fea193277 Partial QML based graph view. 2021-11-19 07:24:04 +01:00
Ben Niemann 8685665147 Let nodes have a body. 2021-11-19 03:07:32 +01:00
Ben Niemann cf074433e9 Export node and connection lists as models and update dynamically. 2021-11-19 02:24:33 +01:00
Ben Niemann 20e3cd131f Add lots of nodes and connections. 2021-11-18 14:40:54 +01:00
Ben Niemann 6182032947 Connect nodes with bezier curve. 2021-11-18 13:46:17 +01:00
Ben Niemann 3e1442293a Enable antialiasing. 2021-11-18 13:45:44 +01:00
Ben Niemann c21d969436 Show FPS. 2021-11-18 13:45:30 +01:00
Ben Niemann 6c80a08b60 Library for QML extensions with cython binding to use from Python. 2021-11-18 12:52:03 +01:00
Ben Niemann 8389ccf6fb Compile custom QML item type in C++ 2021-11-18 12:40:29 +01:00
Ben Niemann 9f353ee612 Use pyside2 from nixpkgs. 2021-11-18 12:39:17 +01:00
Ben Niemann de8fbbef41 Force generating flatbuffers first.
Just can't get waf to correctly compute the dependency graph and it randomly tries to compile files
when the included files are still missing.
2021-11-18 12:15:31 +01:00
Ben Niemann f4ee9c3a80 Playing with QML. 2021-11-18 07:09:47 +01:00
Ben Niemann 6f0cb7a131 Track project modification state and confirm closing if needed. 2021-11-18 01:40:15 +01:00
Ben Niemann 77ff8a894a Open and save projects to disk. 2021-11-17 04:02:59 +01:00
Ben Niemann 4548ea0f5b Sink node changes with the engine. 2021-11-17 02:40:48 +01:00
Ben Niemann e7447c14ff Subclasses with the same base name cause problems in Qt.
https://bugreports.qt.io/browse/PYSIDE-983
2021-11-17 02:38:41 +01:00
Ben Niemann c32c3e1c23 flatpy: Support vectors of enums and tables. 2021-11-17 02:37:58 +01:00
Ben Niemann 9c6a6e1a0c Track commands and implement undo/redo. 2021-11-17 01:38:45 +01:00
Ben Niemann 03a7820982 Mock UI to manage the list of nodes (for testing the model and the interaction). 2021-11-17 01:08:51 +01:00
Ben Niemann 08ff58096b Start the model again with much less sophisticated code. 2021-11-16 05:23:56 +01:00
Ben Niemann d5090bd5ef Disable flaky tests. 2021-11-16 03:52:52 +01:00
Ben Niemann 8752f3a571 Fix lint configs. 2021-11-14 23:41:48 +01:00
Ben Niemann edc0585213 Get rid of the old music stuff. Start from scratch. 2021-11-14 23:41:30 +01:00
Ben Niemann 55ce097e47 Move ownership of engine and settings dialog to app. 2021-11-14 05:21:26 +01:00
Ben Niemann 4b0abbd301 Rip out the engine server, merge graph into engine, split engine into public and private classes. 2021-11-14 03:29:23 +01:00
Ben Niemann 974d5b649e Rip out the multiprocess stuff again. Let's keep it simple! 2021-11-14 00:30:02 +01:00
Ben Niemann 85dacb019e Add settings dialog. 2021-11-13 05:56:15 +01:00
Ben Niemann 640a2aed03 Remove some log noise. 2021-11-13 04:27:58 +01:00
Ben Niemann c3db5ea7d3 Make the app run as multiple processes again. 2021-11-13 01:25:10 +01:00
Ben Niemann 1f72f6b9b4 Ignore deprecation warning from flatbuffers. 2021-11-13 01:19:14 +01:00
Ben Niemann 430674912d Allow running without gdb 2021-11-13 01:18:55 +01:00
Ben Niemann 22c23490d9 gdb should ignore sigint 2021-11-13 01:18:35 +01:00
Ben Niemann c1a4e04d0d Remove junk. 2021-11-12 03:45:18 +01:00
Ben Niemann 4d972d6673 Fix coverage report. 2021-11-12 03:45:11 +01:00
Ben Niemann c7f8b8a122 pytest: more verbose logging. 2021-11-12 03:27:50 +01:00
Ben Niemann d593f61021 Child processes create grpc server and handle shutdown requests. 2021-11-12 03:27:32 +01:00
Ben Niemann 5e4dd1f80f Add grpc server to ProcessManager. 2021-11-12 02:38:27 +01:00
Ben Niemann 2680e34c38 Filter warnings more specifically. 2021-11-12 02:00:20 +01:00
Ben Niemann b6fe276291 Drop the src directory again. Too annoying. 2021-11-12 01:25:02 +01:00
Ben Niemann fe111b49e8 Compile python grpc code for protos. 2021-11-12 01:04:23 +01:00
Ben Niemann bd91aee811 Wrapper script to run pytest manually. 2021-11-11 22:01:28 +01:00
Ben Niemann d293e040a9 ProcessManager: stop explicitly passing the event_loop around. 2021-11-11 21:59:55 +01:00
Ben Niemann 42abcfbad7 Tweak pytest tracebacks. 2021-11-11 08:18:29 +01:00
Ben Niemann 5244391e71 Fix building the base model proto. 2021-11-11 08:15:39 +01:00
Ben Niemann 2def22e3c8 Bring back the process manager. 2021-11-11 08:15:25 +01:00
Ben Niemann 38e681ccac Initial parts of noisicaa.music 2021-11-11 07:01:04 +01:00
Ben Niemann faa38751ab Build python test modules only during 'waf test'. 2021-11-11 05:55:56 +01:00
Ben Niemann 2997bde6ea Fix client test. 2021-11-11 05:55:43 +01:00
Ben Niemann bc42918b1c Be more ignorant about deprecation warning for the imp module. 2021-11-11 05:55:17 +01:00
Ben Niemann 32b57b21e1 Pipe C++ log message through python's logging. 2021-11-11 04:58:22 +01:00
Ben Niemann 6ac03e060b Add quit menu. 2021-11-11 03:27:49 +01:00
Ben Niemann f1a19eb3cf Make the default program silent. 2021-11-11 03:25:43 +01:00
Ben Niemann be57afcc45 Project starts the engine. There's noise! 2021-11-11 03:12:24 +01:00
Ben Niemann 821fae5ce3 Initial Qt boilerplate with qasync (successor of quamash). 2021-11-11 02:23:55 +01:00
Ben Niemann 642632f628 run-noisicaa runs the app under gdb. 2021-11-11 02:21:59 +01:00
Ben Niemann d3273644f9 Create a noisicaa/config.py file. 2021-11-11 02:21:11 +01:00
Ben Niemann c2f5410fe1 Make nodes references counted.
So they can't get deleted, while still being used by the active program.
2021-11-11 00:45:36 +01:00
Ben Niemann ad91f4441c flatpy: handle Vector[UByte] 2021-11-10 05:00:59 +01:00
Ben Niemann f976342f95 EngineServer creates NodeDB and sync state with client. 2021-11-10 05:00:38 +01:00
Ben Niemann 468591bf15 Fix race when stopping engine. 2021-11-10 03:49:53 +01:00
Ben Niemann 8819779ea1 Initial NodeDB (just with builtin nodes). 2021-11-10 03:49:33 +01:00
Ben Niemann 40725ceace Make StatusOr<> work with ASSERT_SUCCESS, etc. 2021-11-10 03:29:45 +01:00
Ben Niemann 68f000e070 Rename NodeRegistry to NodeClassRegistry. 2021-11-10 02:32:11 +01:00
Ben Niemann 2dd8548c73 Tune .projectile. 2021-11-10 02:27:09 +01:00
Ben Niemann ed3fcc004f Link against gmock. How did this work without this? 2021-11-10 02:26:31 +01:00
Ben Niemann b23cd973ca Remove another stray "using namespace std". 2021-11-10 02:12:04 +01:00
Ben Niemann 1a58f65ea1 Use NodeDescription.class_uri to select Node class, not uri.
The uri field will be used for different purposes.
2021-11-09 03:04:34 +01:00
Ben Niemann 00eafff5ad Engine emits state change notifications when starting/stopping. 2021-11-09 02:54:15 +01:00
Ben Niemann b7ee6f3213 Add --test option to './waf test' to select a specific test to run. 2021-11-09 02:52:32 +01:00
Ben Niemann 11f287b3d8 flatpy: Return proper default values for unset fields. 2021-11-09 02:51:36 +01:00
Ben Niemann a425c506ef Fix race condition.
In Engine::start(), the backend sometimes managed to call Engine::process_block(), before
Engine::_running was set to true, triggering an assert in process_block.
2021-11-09 02:50:21 +01:00
Ben Niemann 38a2b2d7c9 Add python coverage and merge it into the lcov report. 2021-11-08 02:32:53 +01:00
Ben Niemann 8891d9f162 Strip down server_test code, covered by client_test already. 2021-11-08 00:12:30 +01:00
Ben Niemann 6c91b09b0e Add engine client class. 2021-11-08 00:11:21 +01:00
Ben Niemann 17195af13c Bring back noisicaa.core.callbacks 2021-11-08 00:04:39 +01:00
Ben Niemann 86888696d8 Merge branch 'reloaded' of odahoda.de:pink/noisicaa into reloaded 2021-11-07 23:20:51 +01:00
Ben Niemann 1ffe03c526 Add initial server_test.py 2021-11-07 23:20:10 +01:00
Ben Niemann 1b25ef8929 Fix Create*() function. 2021-11-07 23:19:19 +01:00
Ben Niemann fc6f271780 Make mypy/pylint even more on-request. 2021-11-07 02:09:42 +01:00
Ben Niemann 107448e476 Only run pylint/mypy on request. 2021-11-07 02:01:24 +01:00
Ben Niemann 29d560a5d1 Add REGISTER_NODE macro 2021-11-07 01:55:20 +01:00
Ben Niemann 7fb43a069b Pin down the current nixpkgs version. 2021-11-07 01:48:42 +01:00
Ben Niemann b8d73cc640 Initial setup for pyside2. 2021-11-07 01:28:44 +01:00
Ben Niemann fa450972b6 Move sink and passthru nodes to node_lib. 2021-11-06 23:52:17 +01:00
Ben Niemann 5e600adf70 Check for pytest_pylint package. 2021-11-06 23:27:42 +01:00
Ben Niemann 2060975dd0 Fix default program. 2021-11-06 23:21:36 +01:00
Ben Niemann ab792d3cba Move playground out of src directory. 2021-11-06 23:20:11 +01:00
Ben Niemann c6f014975a Stricter mypy checking. 2021-11-06 23:14:17 +01:00
Ben Niemann a428895fac Remove lint. 2021-11-06 17:08:06 +01:00
Ben Niemann 6650a3b983 Custom assertions for Status results. 2021-11-06 03:44:25 +01:00
Ben Niemann 750cf65805 Split the graph module into smaller chunks, add PassthruNode. 2021-11-06 03:05:08 +01:00
Ben Niemann f90266e838 Use static registration for node classes. 2021-11-06 02:34:08 +01:00
Ben Niemann 97e9436de2 Build dynamic libs. 2021-11-06 02:32:49 +01:00
Ben Niemann a6b520d5d5 Make OpCodeOutput publicly available. 2021-11-06 01:44:17 +01:00
Ben Niemann 058d4d5e87 Remove dependency of Buffer on Engine. 2021-11-06 01:43:58 +01:00
Ben Niemann 1be385ad39 Delete obsolete files. 2021-11-06 01:17:14 +01:00
Ben Niemann 2933ded61f Make Node abstract baseclass, factor out ProcessorNode and add SinkNode. 2021-11-06 01:15:10 +01:00
Ben Niemann 1c6b1c29c1 Simplify buffer type handling and optimize buffer allocation. 2021-11-05 23:26:28 +01:00
Ben Niemann ca0d37adf4 Do not store list of port->buffer connections in Node.
To prevent future races, when the node's description changes, while Node::run() is active.
2021-11-05 22:03:10 +01:00
Ben Niemann cae45b2699 OpCodes call back to Node, optimize opcodes for input buffers with single connection. 2021-11-05 17:08:48 +01:00
Ben Niemann 5b3cc71f54 Basic program compilation. 2021-11-05 03:00:22 +01:00
Ben Niemann 0bbd345ee8 Add Program::to_string(). 2021-11-05 02:59:16 +01:00
Ben Niemann 4e23089d8e Change Program::append_buffer to take a unique_ptr<BufferType>. 2021-11-05 02:57:37 +01:00
Ben Niemann d04776b44f Add fmt library for string formatting.
https://fmt.dev/
2021-11-05 02:55:59 +01:00
Ben Niemann ecb4aa66b3 Add dep_sort headers for topological sorting of nodes. 2021-11-05 01:29:07 +01:00
Ben Niemann be82c43f8c Initial ports and connections. 2021-11-05 00:35:59 +01:00
Ben Niemann 41196c904c Initial plumbing for processing graph handling. 2021-11-04 02:16:50 +01:00
Ben Niemann bc04efa983 Fix some C++ indentation issues. 2021-11-04 01:09:26 +01:00
Ben Niemann f4194b6245 Convert (existing part of) node description to flatbuffer. 2021-11-04 00:21:59 +01:00
Ben Niemann ac46d8ecb1 Remove obsolete file. 2021-11-04 00:21:38 +01:00
Ben Niemann d3fc51f64e Fix NotImplementedError value. 2021-11-04 00:21:26 +01:00
Ben Niemann 90823ba9bd Reimplement opcodes as C++ classes. 2021-11-03 02:02:53 +01:00
Ben Niemann 7c86269546 Move Program to its own file. 2021-11-02 23:41:38 +01:00
Ben Niemann 57e55c5f6c Move engine internal stuff to noisicaa::engine namespace. 2021-11-02 19:00:48 +01:00
Ben Niemann e567180f74 Remove some lint. 2021-11-02 18:07:42 +01:00
Ben Niemann fed3e4539b flatc: ignore namespace, write file directly to --output. 2021-11-02 17:40:55 +01:00
Ben Niemann 503655ab03 Add a dummy backend and add it by default (to make some tests pass again). 2021-11-02 01:42:12 +01:00
Ben Niemann d67a596f53 Move QueueLogSink to engine.cpp, where it is used.
So there is no dependency from noisicaa/core on noisicaa/engine.
2021-11-02 01:19:33 +01:00
Ben Niemann 3f8796363b Prototype script to build appimage. 2021-11-02 00:44:10 +01:00
Ben Niemann 7a8cb12a8a Move version string to a central file. 2021-11-02 00:43:55 +01:00
Ben Niemann 7e3bdb3e78 Add a dummy "main" binary. 2021-11-02 00:37:53 +01:00
Ben Niemann f9e2656aa3 Make test dependencies optional and only activate in nix-shell. 2021-11-02 00:37:17 +01:00
Ben Niemann c750aa2859 Not using top = '.' might have been a bad idea after all. 2021-11-02 00:36:36 +01:00
Ben Niemann 85a81d8ad6 My own (more sensible) code generator for python flatbuffers. 2021-10-31 23:46:53 +01:00
Ben Niemann 1b740bdd47 Reimplement playground in python using rpcs. 2021-10-30 00:14:19 +02:00
Ben Niemann 153013d639 More graceful server shutdown. 2021-10-30 00:13:40 +02:00
Ben Niemann 60538d7f8e (only moderately sensible) flatbuffer codegen for python. 2021-10-29 23:29:56 +02:00
Ben Niemann b2cb30d712 Stop engine on server shutdown. 2021-10-29 23:28:22 +02:00
Ben Niemann c0dad70641 Allow StartEngine request without block_size/sample_rate. 2021-10-29 23:27:59 +02:00
Ben Niemann 5af576a822 Bring back some cython bindings. 2021-10-29 03:05:39 +02:00
Ben Niemann 333937b2dd Enable tests by default. 2021-10-29 01:39:54 +02:00
Ben Niemann d2f0e25f0f Drop openssl dependency.
Found out about grpc++_unsecure
2021-10-29 01:22:15 +02:00
Ben Niemann a2bab79140 Bring back noisicaa.logging. 2021-10-29 00:07:27 +02:00
Ben Niemann 4d823cf50d Run pytest from build folder, so paths in error reports look correct. 2021-10-28 23:39:43 +02:00
Ben Niemann 013ed6cc94 Use mach-nix to setup python packages, add pytest-pylint support. 2021-10-28 22:56:51 +02:00
Ben Niemann b55be25698 Add pytest-mypy. 2021-10-28 18:13:01 +02:00
Ben Niemann ebfa6d67a5 Convert BackendSettings to flatbuffer.
Not sure how happy I am about this...
2021-10-28 02:54:08 +02:00
Ben Niemann eca5a47042 Rename MessageQueue to MessageBuffer.
Because it is not a queue.
2021-10-28 01:22:41 +02:00
Ben Niemann b7f8faa0c8 Move grpc server to a separate class. 2021-10-28 00:47:30 +02:00
Ben Niemann 9940c0657a Move audio engine related code to noisicaa/engine/ 2021-10-28 00:46:50 +02:00
Ben Niemann ac5d19b5a3 Merge branch 'reloaded' of odahoda.de:pink/noisicaa into reloaded 2021-10-26 19:53:17 +02:00
Ben Niemann 55eca35776 Move code into a src directory, so it doesn't get accidentally imported. 2021-10-26 19:52:58 +02:00
Ben Niemann 9206b73a97 Move code into a src directory, so it doesn't get accidentally imported. 2021-10-26 19:45:34 +02:00
Ben Niemann 3b28d053b7 Bring back some python code and make tests optional. 2021-10-26 19:01:18 +02:00
Ben Niemann f3afb63253 Use pytest to run unittests. 2021-10-26 18:12:38 +02:00
Ben Niemann 0163ef5f3b Add pytest and pytest-cpp packages. 2021-10-26 03:10:11 +02:00
Ben Niemann 4dabf9f9dc Stream engine notifications over grpc. 2021-10-24 23:41:57 +02:00
Ben Niemann 6e5ad1049e Initial grpc based server. 2021-10-24 17:38:50 +02:00
Ben Niemann 0058096b54 Don't fail build if tests are disabled. 2021-10-24 17:36:44 +02:00
Ben Niemann 6f09dc9754 Upgrade to flatbuffers 2.0.0 2021-10-24 16:10:13 +02:00
Ben Niemann 26e0a20f52 Pass log messages from the realtime section through the message queue. 2021-10-24 00:06:32 +02:00
Ben Niemann 84c06426ae Allocate BlockContext on the stack, initialize anew on each block. 2021-10-22 23:27:51 +02:00
Ben Niemann 5e43d5eb4b Use FlatBuffers for engine notifications. 2021-10-21 23:49:22 +02:00
Ben Niemann 0b5e5ce556 Bring back the out message queue. 2021-10-21 21:58:56 +02:00
Ben Niemann f95478e49b ProgramSpec::append_opcode uses varargs. 2021-10-20 14:53:15 +02:00
Ben Niemann 7c1446b937 Programs can have buffers again. 2021-10-20 02:08:37 +02:00
Ben Niemann edb1cbcef8 Execute some kind of program again! 2021-10-20 01:10:16 +02:00
Ben Niemann db982607cf Let the backend call Engine::process_block directly. 2021-10-19 23:16:37 +02:00
Ben Niemann 2a8e633814 Make resampling work for small block sizes. 2021-10-19 18:12:18 +02:00
Ben Niemann 669d66ab1e Decouple engine sample rate from backend's sample rate. 2021-10-19 18:05:50 +02:00
Ben Niemann e5e8118ac6 Decouple engine block size from backend's block size. 2021-10-19 15:31:38 +02:00
Ben Niemann cd00927a62 Fold HostSystem into Engine. 2021-10-19 14:55:45 +02:00
Ben Niemann 335adafed7 Fix some lint warnings. 2021-10-19 00:22:03 +02:00
Ben Niemann 249c7e4b32 Add coverage reports. 2021-10-19 00:21:44 +02:00
Ben Niemann 050caca36a Rename Core to Engine. 2021-10-18 17:31:26 +02:00
Ben Niemann 4fcce777d0 Bring back a bunch of code. Not yet doing anything. 2021-10-18 17:26:58 +02:00
Ben Niemann 9255d1622f Rename src back to noisicaa. 2021-10-17 23:52:57 +02:00
Ben Niemann 597282ebd3 Bring back some logging. 2021-10-17 18:04:31 +02:00
Ben Niemann 584168ecd2 Change Core::stop() to void. 2021-10-17 17:27:11 +02:00
Ben Niemann 2723258a1c Run a meterbridge as subprocess from playground. 2021-10-17 17:00:13 +02:00
Ben Niemann b8c87a0b46 Bring back and fix Status objects. 2021-10-17 16:24:49 +02:00
Ben Niemann df4ff49899 Configure backend via protobuf, move process function to Core. 2021-10-17 15:27:17 +02:00
Ben Niemann ff483babfc Jack makes some noises. 2021-10-17 00:10:49 +02:00
Ben Niemann 105ab5d05a Something with unittests. 2021-10-16 16:40:22 +02:00
Ben Niemann 7e5718d9b5 Something that build with waf and nix. 2021-10-16 15:27:36 +02:00
Ben Niemann 0ce8b75e20 Tabula Rasa 2021-10-16 13:49:10 +02:00
Ben Niemann 4e2426d88e Make it build again... 2021-01-22 23:51:18 +01:00
Ben Niemann 9da22235f2 Blog post: Development update (March 13) 2020-03-13 12:13:25 +01:00
Ben Niemann 3fb19792d4 Assorted bug fixes and minor improvements.
- runs ./waf build on reload
- more information in engine dump
- after a crash, do not reopen previously opened projects (to avoid entering a crash loop)
- rename nodes via context menu (double click on title was very flaky)
- settings dialog shows engine state and load
- dialog to add N measures to measured tracks (Score and Beat Tracks), or fill them till the end of the project
- fix test sample playback in settings dialog
- fix some class of crashes when restarting the engine
- changing BPM triggers rerendering of samples
- fix size of control dials in mixer node UI
- remove crackling when chaning mixer control values
- fix in sample track crash when changing BPM
- engine state wasn't updated when undoing a node removal
- fix corruption of device list in MIDI Source node when plugging in/unplugging a device
- gracefully handle more crashes while opening/creating projects
- name labels for hidden tracks might become visible
- resize track name labels when renaming tracks
- unittest results might not get written to disk
- separate messages for engine load and state
- EngineState tracker is owned by EditorApp (which also owns the engine client) instead of EditorWindow
2020-03-13 11:32:06 +01:00
Ben Niemann 4417fcd020 Fix broken context menu on nodes. 2020-02-23 12:02:22 +01:00
Ben Niemann f11d5bbd93 Blog post: Development update (February 22) 2020-02-22 18:32:05 +01:00
Ben Niemann 8fd99a2ef9 Fix/improve some time related issues and a new toolbar.
- Use a custom layout for the toolbar (instead of QToolBar).
- Add display of the current playhead time to toolbar.
- Add a VUMeter for master output level to toolbar.
- Move engine load widget to the toolbar.
- Snap-to-grid when moving the playhead.
- Fix moving the playhead.
- Fix state updates of the playback/loop buttons.
- Measured tracks were incorrectly aligned.
- New VUMeter node.
2020-02-22 17:52:35 +01:00
Ben Niemann fa32b0f59c Blog post: Development update (February 21) 2020-02-21 11:16:11 +01:00
Ben Niemann 9081b3418d Tweaks to make it work with the latest odasite version. 2020-02-21 10:18:25 +01:00
1262 changed files with 87401 additions and 147244 deletions

View File

@ -1,12 +1,8 @@
; TODO:
; - add shortcuts to run tests
; - add tweaks to C++ indentation
; - no indentation for namespace
; - correct indentation for arg list continuation
((nil . (
; Projetile
(projectile-project-test-cmd . "./waf test")
(projectile-project-test-cmd . "nix-shell --run './waf test'")
(projectile-project-compilation-cmd . "nix-shell --run './waf build'")
(projectile-project-run-cmd . "nix-shell --run 'DEBUG=0 ./bin/noisicaa-dev'")
(pyvenv-workon . "noisicaa")
@ -16,6 +12,11 @@
; Be more generous than 80 columns.
(fill-column . 100)
; Do not indent body of namespaces.
(eval . (add-to-list 'c-offsets-alist '(innamespace . 0)))
(eval . (add-to-list 'c-offsets-alist '(arglist-intro . ++)))
(eval . (add-to-list 'c-offsets-alist '(arglist-close . 0)))
; Highlight tabs, so they don't slip in unnoticed.
; TODO: make this work correctly
; - should only show leading tabs

16
.gitignore vendored
View File

@ -1,13 +1,11 @@
__pycache__/
/build
/3rdparty/*/build
/vmtests
/ENV
*.pyc
*~
.nobackup
/.venv
/website/_build/
/website/_serve/
/.waf*
/.lock-waf*
/venv/
/build/
/result
/playground/
/website/.venv/
/website/_build/
/website/_serve/

15
.gitmodules vendored 100644
View File

@ -0,0 +1,15 @@
[submodule "noisicaa/node_lib/swh/src"]
path = noisicaa/node_lib/swh/src
url = https://github.com/swh/ladspa
[submodule "3rdparty/qnanopainter"]
path = 3rdparty/qnanopainter
url = https://github.com/QUItCoding/qnanopainter
[submodule "3rdparty/dep_sort"]
path = 3rdparty/dep_sort
url = https://github.com/graphitemaster/dep_sort
[submodule "3rdparty/subprocess"]
path = 3rdparty/subprocess
url = https://github.com/benman64/subprocess
[submodule "3rdparty/flatpy"]
path = 3rdparty/flatpy
url = https://git.odahoda.de/pink/flatpy.git

View File

@ -1,3 +1,10 @@
-/build
-/venv
-/vmtests
-/build/
-/.waf*
-/.lock-waf*
-/website/.venv/
-/website/_serve/
-/website/_build/
-/3rdparty/qnanopainter/
-/3rdparty/subprocess/
-/3rdparty/dep_sort/
-/3rdparty/flatpy/

17
3rdparty/README.md vendored 100644
View File

@ -0,0 +1,17 @@
Some of the more obscure packages, which are not generally available in distributions.
* qnanopainter: Library for implementing OpenGL accelerated Qt5 C++ UI components.
- Source: https://github.com/QUItCoding/qnanopainter
- License: zlib
* dep_sort: Generic topological sorting for sorting a list of dependencies in C++17.
- Source: https://github.com/graphitemaster/dep_sort
- License: MIT
* subprocess: cross platform subprocess library for c++ similar to design of python subprocess
- Source: https://github.com/benman64/subprocess
- License: MIT
* flatpy: An alternative Python code generator for flatbuffers.
- Source: https://git.odahoda.de/pink/flatpy
- License: Apache-2.0

1
3rdparty/dep_sort vendored 160000

@ -0,0 +1 @@
Subproject commit 9e96e9426e74e6dc24ba26fdd9c2bee5bab72b0b

1
3rdparty/flatpy vendored 160000

@ -0,0 +1 @@
Subproject commit bf1a4e391ffcd484f627ba81ae54ffe0c073acb9

1
3rdparty/qnanopainter vendored 160000

@ -0,0 +1 @@
Subproject commit 963870484151ebe6ca9225e0e73588abb7e564e0

1
3rdparty/subprocess vendored 160000

@ -0,0 +1 @@
Subproject commit e1cae5e86e5d089e65e906f7c13917b7bbb75d04

File diff suppressed because it is too large Load Diff

View File

@ -1,511 +0,0 @@
# The PEP 484 type hints stub file for the QtDBus module.
#
# Generated by SIP 4.19.8
#
# Copyright (c) 2018 Riverbank Computing Limited <info@riverbankcomputing.com>
#
# This file is part of PyQt5.
#
# This file may be used under the terms of the GNU General Public License
# version 3.0 as published by the Free Software Foundation and appearing in
# the file LICENSE included in the packaging of this file. Please review the
# following information to ensure the GNU General Public License version 3.0
# requirements will be met: http://www.gnu.org/copyleft/gpl.html.
#
# If you do not wish to use this file under the terms of the GPL version 3.0
# then you may purchase a commercial license. For more information contact
# info@riverbankcomputing.com.
#
# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
import typing
import sip
from PyQt5 import QtCore
# Support for QDate, QDateTime and QTime.
import datetime
# Convenient type aliases.
PYQT_SIGNAL = typing.Union[QtCore.pyqtSignal, QtCore.pyqtBoundSignal]
PYQT_SLOT = typing.Union[typing.Callable[..., None], QtCore.pyqtBoundSignal]
class QDBusAbstractAdaptor(QtCore.QObject):
def __init__(self, parent: QtCore.QObject) -> None: ...
def autoRelaySignals(self) -> bool: ...
def setAutoRelaySignals(self, enable: bool) -> None: ...
class QDBusAbstractInterface(QtCore.QObject):
def __init__(self, service: str, path: str, interface: str, connection: 'QDBusConnection', parent: QtCore.QObject) -> None: ...
def disconnectNotify(self, signal: QtCore.QMetaMethod) -> None: ...
def connectNotify(self, signal: QtCore.QMetaMethod) -> None: ...
def asyncCallWithArgumentList(self, method: str, args: typing.Iterable[typing.Any]) -> 'QDBusPendingCall': ...
def asyncCall(self, method: str, arg1: typing.Any = ..., arg2: typing.Any = ..., arg3: typing.Any = ..., arg4: typing.Any = ..., arg5: typing.Any = ..., arg6: typing.Any = ..., arg7: typing.Any = ..., arg8: typing.Any = ...) -> 'QDBusPendingCall': ...
@typing.overload
def callWithCallback(self, method: str, args: typing.Iterable[typing.Any], returnMethod: PYQT_SLOT, errorMethod: PYQT_SLOT) -> bool: ...
@typing.overload
def callWithCallback(self, method: str, args: typing.Iterable[typing.Any], slot: PYQT_SLOT) -> bool: ...
def callWithArgumentList(self, mode: 'QDBus.CallMode', method: str, args: typing.Iterable[typing.Any]) -> 'QDBusMessage': ...
@typing.overload
def call(self, method: str, arg1: typing.Any = ..., arg2: typing.Any = ..., arg3: typing.Any = ..., arg4: typing.Any = ..., arg5: typing.Any = ..., arg6: typing.Any = ..., arg7: typing.Any = ..., arg8: typing.Any = ...) -> 'QDBusMessage': ...
@typing.overload
def call(self, mode: 'QDBus.CallMode', method: str, arg1: typing.Any = ..., arg2: typing.Any = ..., arg3: typing.Any = ..., arg4: typing.Any = ..., arg5: typing.Any = ..., arg6: typing.Any = ..., arg7: typing.Any = ..., arg8: typing.Any = ...) -> 'QDBusMessage': ...
def timeout(self) -> int: ...
def setTimeout(self, timeout: int) -> None: ...
def lastError(self) -> 'QDBusError': ...
def interface(self) -> str: ...
def path(self) -> str: ...
def service(self) -> str: ...
def connection(self) -> 'QDBusConnection': ...
def isValid(self) -> bool: ...
class QDBusArgument(sip.simplewrapper):
@typing.overload
def __init__(self) -> None: ...
@typing.overload
def __init__(self, other: 'QDBusArgument') -> None: ...
@typing.overload
def __init__(self, arg: typing.Any, id: int = ...) -> None: ...
def swap(self, other: 'QDBusArgument') -> None: ...
def endMapEntry(self) -> None: ...
def beginMapEntry(self) -> None: ...
def endMap(self) -> None: ...
def beginMap(self, kid: int, vid: int) -> None: ...
def endArray(self) -> None: ...
def beginArray(self, id: int) -> None: ...
def endStructure(self) -> None: ...
def beginStructure(self) -> None: ...
def add(self, arg: typing.Any, id: int = ...) -> None: ...
class QDBus(sip.simplewrapper):
class CallMode(int): ...
NoBlock = ... # type: 'QDBus.CallMode'
Block = ... # type: 'QDBus.CallMode'
BlockWithGui = ... # type: 'QDBus.CallMode'
AutoDetect = ... # type: 'QDBus.CallMode'
class QDBusConnection(sip.simplewrapper):
class ConnectionCapability(int): ...
UnixFileDescriptorPassing = ... # type: 'QDBusConnection.ConnectionCapability'
class UnregisterMode(int): ...
UnregisterNode = ... # type: 'QDBusConnection.UnregisterMode'
UnregisterTree = ... # type: 'QDBusConnection.UnregisterMode'
class RegisterOption(int): ...
ExportAdaptors = ... # type: 'QDBusConnection.RegisterOption'
ExportScriptableSlots = ... # type: 'QDBusConnection.RegisterOption'
ExportScriptableSignals = ... # type: 'QDBusConnection.RegisterOption'
ExportScriptableProperties = ... # type: 'QDBusConnection.RegisterOption'
ExportScriptableInvokables = ... # type: 'QDBusConnection.RegisterOption'
ExportScriptableContents = ... # type: 'QDBusConnection.RegisterOption'
ExportNonScriptableSlots = ... # type: 'QDBusConnection.RegisterOption'
ExportNonScriptableSignals = ... # type: 'QDBusConnection.RegisterOption'
ExportNonScriptableProperties = ... # type: 'QDBusConnection.RegisterOption'
ExportNonScriptableInvokables = ... # type: 'QDBusConnection.RegisterOption'
ExportNonScriptableContents = ... # type: 'QDBusConnection.RegisterOption'
ExportAllSlots = ... # type: 'QDBusConnection.RegisterOption'
ExportAllSignals = ... # type: 'QDBusConnection.RegisterOption'
ExportAllProperties = ... # type: 'QDBusConnection.RegisterOption'