2021-11-22 Tim Janik # 93a2dd9d8bd MISC: Makefile.mk: publish release tag after successful release-upload Signed-off-by: Tim Janik 2021-11-22 Tim Janik # bcde2f3e444 tag: v0.0.1-alpha1 Anklang 0.0.1-alpha1 This wraps up a good year of development to reshape the code base into something sane, modern and extensible. Let's hope we can pick up a fast pace for releases from now on... Signed-off-by: Tim Janik 2021-11-22 Tim Janik # 65517488398 Merge branch 'release-rules' * release-rules: MISC: Makefile.mk: upload release assets ChangeLog, deb, AppImage MISC: Makefile.mk: force git worktree remove MISC: Makefile.mk: show release artefacts after release build MISC: Makefile.mk: add 'release-changelog' to 'release-build' MISC: Makefile.mk: use make anklang-deb for release-build MISC: Makefile.mk: add release-upload, use --news-tag options MISC: Makefile.mk: add rule to generate release ChangeLog MISC: Makefile.mk: add anklang-deb rule MISC: Makefile.mk: move appimage-runtime-zstd next to appimage rule MISC: Makefile.mk: build debian package MISC: Makefile.mk: add release-build to build release artefacts with defaults MISC: Makefile.mk: add release-news to help with NEWS.md updates MISC: Makefile.mk: introduce proper AppImage dependency MISC: version.sh: add --news-tag1, --news-tag2 to extract tags from NEWS.md MISC: version.sh: handle 2-number versions, enforce non-release postfix MISC: config-uname.mk: INSTALL_DIR_RULE.impl: install explicit targets only MISC: mkdeb.sh: remove unneeded usr/share/doc/ link DOC: Makefile.mk: add missing $(docdir)/anklang installation DOC: style/Makefile.mk: INSTALL_DIR_RULE needs dependable install targets DOC: Makefile.mk: use preconfigured $(CP) ELECTRON: Makefile.mk: minor cleanup Makefile.mk: define docdir Signed-off-by: Tim Janik 2021-11-21 Tim Janik # 459fb97b855 MISC: Makefile.mk: upload release assets ChangeLog, deb, AppImage Signed-off-by: Tim Janik 2021-11-21 Tim Janik # 220573b312f MISC: Makefile.mk: force git worktree remove Signed-off-by: Tim Janik 2021-11-21 Tim Janik # 25b404564f4 MISC: Makefile.mk: show release artefacts after release build Signed-off-by: Tim Janik 2021-11-21 Tim Janik # 432cb33914a MISC: Makefile.mk: add 'release-changelog' to 'release-build' Signed-off-by: Tim Janik 2021-11-21 Tim Janik # c0c89669c3d MISC: Makefile.mk: use make anklang-deb for release-build Signed-off-by: Tim Janik 2021-11-21 Tim Janik # b25be361b28 MISC: Makefile.mk: add release-upload, use --news-tag options Signed-off-by: Tim Janik 2021-11-21 Tim Janik # d790bcd046b MISC: Makefile.mk: add rule to generate release ChangeLog Signed-off-by: Tim Janik 2021-11-21 Tim Janik # d894734492b MISC: Makefile.mk: add anklang-deb rule Signed-off-by: Tim Janik 2021-11-21 Tim Janik # bb55f26003e MISC: Makefile.mk: move appimage-runtime-zstd next to appimage rule Signed-off-by: Tim Janik 2021-11-21 Tim Janik # c5a4af3a836 MISC: Makefile.mk: build debian package Signed-off-by: Tim Janik 2021-11-21 Tim Janik # 5104f1d3214 MISC: Makefile.mk: add release-build to build release artefacts with defaults Signed-off-by: Tim Janik 2021-11-21 Tim Janik # b7ac7ee20bc MISC: Makefile.mk: add release-news to help with NEWS.md updates Signed-off-by: Tim Janik 2021-11-21 Tim Janik # add9d225add MISC: Makefile.mk: introduce proper AppImage dependency Signed-off-by: Tim Janik 2021-11-20 Tim Janik # a102bec35f5 MISC: version.sh: add --news-tag1, --news-tag2 to extract tags from NEWS.md Signed-off-by: Tim Janik 2021-11-20 Tim Janik # 2a5e3ac7ada MISC: version.sh: handle 2-number versions, enforce non-release postfix Signed-off-by: Tim Janik 2021-11-20 Tim Janik # 5b62883cf79 MISC: config-uname.mk: INSTALL_DIR_RULE.impl: install explicit targets only Signed-off-by: Tim Janik 2021-11-22 Tim Janik # c240ce4e2bd MISC: mkdeb.sh: remove unneeded usr/share/doc/ link Signed-off-by: Tim Janik 2021-11-22 Tim Janik # d04e6789182 DOC: Makefile.mk: add missing $(docdir)/anklang installation Signed-off-by: Tim Janik 2021-11-20 Tim Janik # 2b47ef08a08 DOC: style/Makefile.mk: INSTALL_DIR_RULE needs dependable install targets Signed-off-by: Tim Janik 2021-11-20 Tim Janik # 3dcb8b8c2b3 DOC: Makefile.mk: use preconfigured $(CP) Signed-off-by: Tim Janik 2021-11-22 Tim Janik # d6663eb29f7 ELECTRON: Makefile.mk: minor cleanup Signed-off-by: Tim Janik 2021-11-22 Tim Janik # ee4b1663c9d Makefile.mk: define docdir Signed-off-by: Tim Janik 2021-11-19 Tim Janik # 278109c24dc Merge branch 'print-driver-flags' * print-driver-flags: ASE: main.cc: --list-drivers: print driver flags if ASE_DEBUG=driver ASE: driver: add priority_string() UI: eslintrc.js: use OFF consistently Signed-off-by: Tim Janik 2021-11-19 Tim Janik # 755dc207031 ASE: main.cc: --list-drivers: print driver flags if ASE_DEBUG=driver Signed-off-by: Tim Janik 2021-11-19 Tim Janik # 07b411848b6 ASE: driver: add priority_string() Signed-off-by: Tim Janik 2021-11-13 Tim Janik # e35d872a5e7 UI: eslintrc.js: use OFF consistently Signed-off-by: Tim Janik 2021-11-19 Tim Janik # 5b9045d6b7c Merge branch 'with-latex' * with-latex: DOC: Makefile.mk: build & install anklang-manual.pdf if WITH_LATEX=y is in env MISC: Makefile.mk: force link installation DOC: Makefile.mk: doc/install: fix missing doc/style/ installation NEWS.md: fix wording Signed-off-by: Tim Janik 2021-11-18 Tim Janik # c43262cc90e DOC: Makefile.mk: build & install anklang-manual.pdf if WITH_LATEX=y is in env Signed-off-by: Tim Janik 2021-11-18 Tim Janik # 599d68f8834 MISC: Makefile.mk: force link installation Signed-off-by: Tim Janik 2021-11-18 Tim Janik # 03e2fae89e9 DOC: Makefile.mk: doc/install: fix missing doc/style/ installation Signed-off-by: Tim Janik 2021-11-18 Tim Janik # 0e14084eb0f NEWS.md: fix wording Signed-off-by: Tim Janik 2021-11-11 Tim Janik # 5674a32c07e Merge branch 'clip-playback' * clip-playback: UI: util.js: remove unused code UI: b/positionview.vue: make numerator/denominator editable - use editable fields for numerator and denominator - avoid requesting unneeded telemetry fields UI: b/devicepanel.vue: use defaultcollapse=false for device menu UI: b/treeselector-item.vue: honor defaultcollapse for collapsible entries UI: b/treeselector.vue: add 'defaultcollapse' UI: b/trackview.vue: remove unused code UI: b/tracklist.vue: provide b-cliplist.trackindex attribute UI: b/clipview.vue: add component to render clip thumbnails - render thumbnail of a clip - export tickscale - change current piano roll contents upon clicks UI: b/cliplist.vue: use b-clipview and show playback position - use b-clipview to display clips - display current clip playback position via track telemetry - avoid Proxy-fication of telemetry - cleanup cliplist.vue UI: theme.scss: introduce b-clip-play-bg and b-clip-play-fg ASE: track: add ClipScout, setup MidiProducer, feed it Clip::Generator - create and connect MidiProducer - install EngineMidiInput -> MidiProducer connection - update_clips(): adjust MidiFeed when clips change - queue_cmd: support START/STOP commands on MIDI producer - TrackImpl: expose project() - queue_cmd(STOP): allow `bool restart` as callback argument - add ClipScout to determine clip succession - export track playback telemetry fields ASE: api.hh: export track playback telemetry fields ASE: project: 1776 BPM, use TickSignature, fix start & stop - add TickSignature, allow changes to numerator/denominator - start and stop all tracks synchronously - use TickSignature to store and export tempo - conditionally reset transport upon second stop() - allow up to 1776 BPM - align telemetry fields ASE: engine.cc: update transport position directly after rendering ASE: transport: 1776 BPM, align fields, add modification API - use TickSignature to store and export tempo - allow up to 1776 BPM - check min/max rate and bpm - align telemetry fields - guard against negative tick values - provide set_tick() and set_beat() - remove unused offset in TickSignature - support TickSignature assignment ASE: clip: add MIDI note Generator - trigger update_clips() if the containing track on changes - emit notifications after deserialization - add ClipImpl::Generator to isolate clip note generation - use closed-form calculation to jump across loops - use callbacks to generate notes from generate() - return number of generated ticks from generate() ASE: midilib: introduce MidiProducer and helpers MidiFeed, MidiClip - add MidiProducer class to generate MIDI events from clips and pass through MIDI device events. Uses TRANSPORT_PPQN from transport.hh. Notes of a MidiClip are provided as a sequnce of clips in a MidiFeed struct. Expose the current playback positon for Ase::Track. - add ClipImplGeneratorS to MidiFeed - start clip on bar boundary - call ClipImpl::Generator to generate notes - use ClipImplGenerator to generate MIDI note events - use TrackImpl::ClipScout to guide clip succession - pass through incoming MIDI input events - preserve play position across feed updates - flush NOTE_OFF events on stop - add `restart` flag to stop() - allow playback continuation ASE: midievent: ensure_order(): use non-allocating fixed_sort and inline dtors Signed-off-by: Tim Janik 2021-11-10 Tim Janik # c84845d9a0b UI: util.js: remove unused code Signed-off-by: Tim Janik 2021-11-10 Tim Janik # a77f8c386b9 UI: b/positionview.vue: make numerator/denominator editable - use editable fields for numerator and denominator - avoid requesting unneeded telemetry fields Signed-off-by: Tim Janik 2021-11-10 Tim Janik # eced4e5d430 UI: b/devicepanel.vue: use defaultcollapse=false for device menu Signed-off-by: Tim Janik 2021-11-10 Tim Janik # d1a7ac6e680 UI: b/treeselector-item.vue: honor defaultcollapse for collapsible entries Signed-off-by: Tim Janik 2021-11-10 Tim Janik # cc9bbfec450 UI: b/treeselector.vue: add 'defaultcollapse' Signed-off-by: Tim Janik 2021-11-10 Tim Janik # 587d0f01e59 UI: b/trackview.vue: remove unused code Signed-off-by: Tim Janik 2021-11-10 Tim Janik # 84ea9de4d42 UI: b/tracklist.vue: provide b-cliplist.trackindex attribute Signed-off-by: Tim Janik 2021-11-10 Tim Janik # 413ff837e63 UI: b/clipview.vue: add component to render clip thumbnails - render thumbnail of a clip - export tickscale - change current piano roll contents upon clicks Signed-off-by: Tim Janik 2021-11-10 Tim Janik # d59fe839b0d UI: b/cliplist.vue: use b-clipview and show playback position - use b-clipview to display clips - display current clip playback position via track telemetry - avoid Proxy-fication of telemetry - cleanup cliplist.vue Signed-off-by: Tim Janik 2021-11-10 Tim Janik # c0bd3b55637 UI: theme.scss: introduce b-clip-play-bg and b-clip-play-fg Signed-off-by: Tim Janik 2021-09-07 Tim Janik # 209ce5de23c ASE: track: add ClipScout, setup MidiProducer, feed it Clip::Generator - create and connect MidiProducer - install EngineMidiInput -> MidiProducer connection - update_clips(): adjust MidiFeed when clips change - queue_cmd: support START/STOP commands on MIDI producer - TrackImpl: expose project() - queue_cmd(STOP): allow `bool restart` as callback argument - add ClipScout to determine clip succession - export track playback telemetry fields Signed-off-by: Tim Janik 2021-11-10 Tim Janik # 62068d27086 ASE: api.hh: export track playback telemetry fields Signed-off-by: Tim Janik 2021-11-10 Tim Janik # d0fcf5dcdc5 ASE: project: 1776 BPM, use TickSignature, fix start & stop - add TickSignature, allow changes to numerator/denominator - start and stop all tracks synchronously - use TickSignature to store and export tempo - conditionally reset transport upon second stop() - allow up to 1776 BPM - align telemetry fields Signed-off-by: Tim Janik 2021-11-10 Tim Janik # 59f4c4d67d1 ASE: engine.cc: update transport position directly after rendering Signed-off-by: Tim Janik 2021-11-10 Tim Janik # 54a075e4f74 ASE: transport: 1776 BPM, align fields, add modification API - use TickSignature to store and export tempo - allow up to 1776 BPM - check min/max rate and bpm - align telemetry fields - guard against negative tick values - provide set_tick() and set_beat() - remove unused offset in TickSignature - support TickSignature assignment Signed-off-by: Tim Janik 2021-11-10 Tim Janik # 6a26632a449 ASE: clip: add MIDI note Generator - trigger update_clips() if the containing track on changes - emit notifications after deserialization - add ClipImpl::Generator to isolate clip note generation - use closed-form calculation to jump across loops - use callbacks to generate notes from generate() - return number of generated ticks from generate() Signed-off-by: Tim Janik 2021-11-10 Tim Janik # 9021b9f44e8 ASE: midilib: introduce MidiProducer and helpers MidiFeed, MidiClip - add MidiProducer class to generate MIDI events from clips and pass through MIDI device events. Uses TRANSPORT_PPQN from transport.hh. Notes of a MidiClip are provided as a sequnce of clips in a MidiFeed struct. Expose the current playback positon for Ase::Track. - add ClipImplGeneratorS to MidiFeed - start clip on bar boundary - call ClipImpl::Generator to generate notes - use ClipImplGenerator to generate MIDI note events - use TrackImpl::ClipScout to guide clip succession - pass through incoming MIDI input events - preserve play position across feed updates - flush NOTE_OFF events on stop - add `restart` flag to stop() - allow playback continuation Signed-off-by: Tim Janik 2021-11-10 Tim Janik # 2a0dc3dbc57 ASE: midievent: ensure_order(): use non-allocating fixed_sort and inline dtors Signed-off-by: Tim Janik 2021-11-10 Tim Janik # 652242bf7e0 Merge branch 'driver-hints' * driver-hints: UI: startup.js: Chrome-95 still has the movementX devicePixelRatio bug UI: b/treeselector*.vue: use :disabled="null" to enable items (Vue3) UI: b/devicepanel.vue: add comment UI: util.js: fix indentation UI: b/contextmenu.vue: avoid scaling during positioning UI: b/fed-object.vue: widen label and value widths UI: b/choice.vue: avoid fixing width for small="0" UI: b/icon.vue: use top-alignment for all icons UI: b/choice.vue: properly break lines after choice spans UI: b/contextmenu.vue: copy b-contextmenu-plaeholder classes over to b-contextmenu UI: b/preferencesdialog.vue: use hints to assign headset and recorder icons UI: util.js: rename observable_from_getters() UI: b/shell.vue: use cwd=MUSIC as FS default UI: b/filedialog.vue: give cwd property precedence UI: b/envue.js: copy static members UI: b/envue.js: simplify component initialization, improve docs UI: b/envue.js: forward activated(), deactivated(), serverPrefetch() UI: util.js: add weakoid() to weakly associate objects with a unique id UI: util.js: improvde dom_update() robustness, add dom_change() ASE: driver-alsa.cc: adjust priorities based on DriverEntry.hints ASE: driver-alsa.cc: add DriverEntry.hints based on mixer configurations ASE: driver.hh: allow finer grained priorities ASE: server.cc: add DriverEntry.hints to icon specification ASE: main.cc: print DriverEntry.hints during --list-drivers ASE: driver.hh: add 'hints' to DriverEntry ASE: api.hh: optimize ClipNote for storage size and lookups ASE: processor, combo: rename pm_connect_event_input() ASE: driver-alsa.cc: rename EDEBUG() ASE: defs.hh: add DCallbackS for callback sequences that take a double ASE: defs.hh: provide U64MAX I63MAX I63MIN U32MAX I31MAX I31MIN M23MAX M52MAX ASE: defs.hh: define CallbackS ASE: sortnet: fixed_sort(): use sorting networks for containers <= 16 elements ASE: regex: support Re::sub() with count argument ASE: utils.cc: allow '-_' in Icon specifications ASE: internal.hh: add assert_paranoid() ASE: cxxaux.hh: add ASE_ASSERT_PARANOID() Signed-off-by: Tim Janik 2021-11-10 Tim Janik # b95e5fcaa9b UI: startup.js: Chrome-95 still has the movementX devicePixelRatio bug Signed-off-by: Tim Janik 2021-10-03 Tim Janik # 0df7f2402cf UI: b/treeselector*.vue: use :disabled="null" to enable items (Vue3) Signed-off-by: Tim Janik 2021-10-03 Tim Janik # f12c0e55cdb UI: b/devicepanel.vue: add comment Signed-off-by: Tim Janik 2021-10-03 Tim Janik # 15948e7eaa9 UI: util.js: fix indentation Signed-off-by: Tim Janik 2021-10-03 Tim Janik # ccbc695968c UI: b/contextmenu.vue: avoid scaling during positioning Signed-off-by: Tim Janik 2021-09-26 Tim Janik # 2cc0b1620ef UI: b/fed-object.vue: widen label and value widths Signed-off-by: Tim Janik 2021-09-26 Tim Janik # df2da252819 UI: b/choice.vue: avoid fixing width for small="0" Signed-off-by: Tim Janik 2021-09-25 Tim Janik # 8c2f7014b4c UI: b/icon.vue: use top-alignment for all icons Signed-off-by: Tim Janik 2021-09-25 Tim Janik # 79a9b2765c4 UI: b/choice.vue: properly break lines after choice spans Signed-off-by: Tim Janik 2021-09-25 Tim Janik # 58bccd022ba UI: b/contextmenu.vue: copy b-contextmenu-plaeholder classes over to b-contextmenu Signed-off-by: Tim Janik 2021-09-21 Tim Janik # 6c5b2507c66 UI: b/preferencesdialog.vue: use hints to assign headset and recorder icons Signed-off-by: Tim Janik 2021-09-07 Tim Janik # d678d793de5 UI: util.js: rename observable_from_getters() Signed-off-by: Tim Janik 2021-09-05 Tim Janik # 5e661b74409 UI: b/shell.vue: use cwd=MUSIC as FS default Signed-off-by: Tim Janik 2021-09-05 Tim Janik # 4142788961c UI: b/filedialog.vue: give cwd property precedence Signed-off-by: Tim Janik 2021-09-05 Tim Janik # e9a64a6ed7e UI: b/envue.js: copy static members Signed-off-by: Tim Janik 2021-09-05 Tim Janik # ac05abcc145 UI: b/envue.js: simplify component initialization, improve docs Signed-off-by: Tim Janik 2021-09-05 Tim Janik # 300c0cefa8d UI: b/envue.js: forward activated(), deactivated(), serverPrefetch() Signed-off-by: Tim Janik 2021-09-01 Tim Janik # 49d038307bd UI: util.js: add weakoid() to weakly associate objects with a unique id Signed-off-by: Tim Janik 2021-09-05 Tim Janik # b344597147b UI: util.js: improvde dom_update() robustness, add dom_change() Signed-off-by: Tim Janik 2021-09-21 Tim Janik # 35e5bcb2948 ASE: driver-alsa.cc: adjust priorities based on DriverEntry.hints Signed-off-by: Tim Janik 2021-09-21 Tim Janik # 49d178d8fd7 ASE: driver-alsa.cc: add DriverEntry.hints based on mixer configurations Signed-off-by: Tim Janik 2021-09-21 Tim Janik # 83ff5eceacf ASE: driver.hh: allow finer grained priorities Signed-off-by: Tim Janik 2021-09-19 Tim Janik # bf6a34fb83f ASE: server.cc: add DriverEntry.hints to icon specification Signed-off-by: Tim Janik 2021-09-18 Tim Janik # 784f76eee1e ASE: main.cc: print DriverEntry.hints during --list-drivers Signed-off-by: Tim Janik 2021-09-18 Tim Janik # 202a77d9229 ASE: driver.hh: add 'hints' to DriverEntry Signed-off-by: Tim Janik 2021-07-15 Tim Janik # ab4ebfad50f ASE: api.hh: optimize ClipNote for storage size and lookups Signed-off-by: Tim Janik 2021-07-16 Tim Janik # 0fd6498254b ASE: processor, combo: rename pm_connect_event_input() Signed-off-by: Tim Janik 2021-09-21 Tim Janik # 773a671f17a ASE: driver-alsa.cc: rename EDEBUG() Signed-off-by: Tim Janik 2021-10-29 Tim Janik # 148bfea62a7 ASE: defs.hh: add DCallbackS for callback sequences that take a double Signed-off-by: Tim Janik 2021-10-14 Tim Janik # 9c430870715 ASE: defs.hh: provide U64MAX I63MAX I63MIN U32MAX I31MAX I31MIN M23MAX M52MAX Signed-off-by: Tim Janik 2021-10-09 Tim Janik # ee9fc72a15e ASE: defs.hh: define CallbackS Signed-off-by: Tim Janik 2021-10-26 Tim Janik # d368b155aa2 ASE: sortnet: fixed_sort(): use sorting networks for containers <= 16 elements Signed-off-by: Tim Janik 2021-09-18 Tim Janik # e1dd4117f53 ASE: regex: support Re::sub() with count argument Signed-off-by: Tim Janik 2021-09-18 Tim Janik # ad1ad98e2eb ASE: utils.cc: allow '-_' in Icon specifications Signed-off-by: Tim Janik 2021-10-26 Tim Janik # 2ceeb6d1786 ASE: internal.hh: add assert_paranoid() Signed-off-by: Tim Janik 2021-10-26 Tim Janik # a3d0aa88d7e ASE: cxxaux.hh: add ASE_ASSERT_PARANOID() Signed-off-by: Tim Janik 2021-11-10 Tim Janik # 4107f2cf18c Merge branch 'eslint-fixes' * eslint-fixes: MISC: dbuild.sh: build docker image *without* caching if '-i' is given MISC: package.json.in: upgrade nodemon-2.0.15, needs undefsafe-2.0.5 For unknown reasons, npm-7.24.1 chokes unless undefsafe@2.0.5 is explicitely installed alongside nodemon-2.0.15. MISC: package.json.in: upgrade to vue-3.2.21, eslint-plugin-vue-7.20.0 UI: eslintrc.js: rename eslintrc.js from .eslintrc.js UI: .eslintrc.js: switch to plugin:vue/vue3-recommended UI: b/treeselector-item.vue: use , mandated by vue3 Signed-off-by: Tim Janik 2021-11-10 Tim Janik # 934b12cc3b8 MISC: dbuild.sh: build docker image *without* caching if '-i' is given Signed-off-by: Tim Janik 2021-11-10 Tim Janik # 5b84ddde24e MISC: package.json.in: upgrade nodemon-2.0.15, needs undefsafe-2.0.5 For unknown reasons, npm-7.24.1 chokes unless undefsafe@2.0.5 is explicitely installed alongside nodemon-2.0.15. Signed-off-by: Tim Janik 2021-11-10 Tim Janik # 43bdcd6daaa MISC: package.json.in: upgrade to vue-3.2.21, eslint-plugin-vue-7.20.0 Signed-off-by: Tim Janik 2021-11-10 Tim Janik # 44678b20868 UI: eslintrc.js: rename eslintrc.js from .eslintrc.js Signed-off-by: Tim Janik 2021-11-10 Tim Janik # f192a2bc1fb UI: .eslintrc.js: switch to plugin:vue/vue3-recommended Signed-off-by: Tim Janik 2021-11-10 Tim Janik # 96c4f79e983 UI: b/treeselector-item.vue: use , mandated by vue3 Signed-off-by: Tim Janik 2021-11-09 Tim Janik # eab0f3c85c1 Merge branch 'preload-option' * preload-option: ASE: driver.cc: account for n_channels_ during NULL driver writes ASE: main: allow --jsbin without --jsipc ASE: websocket, jsonapi: allow fine grained logging via logflags ASE: server: add global ServerImpl *SERVER; ASE: main: provide --list-drivers ASE: main: support --preload Makefile.mk: use ctags-universal to generate $>/TAGS Signed-off-by: Tim Janik 2021-07-13 Tim Janik # 432a1edde0e ASE: driver.cc: account for n_channels_ during NULL driver writes Signed-off-by: Tim Janik 2021-08-07 Tim Janik # 4b4babb4af2 ASE: main: allow --jsbin without --jsipc Signed-off-by: Tim Janik 2021-08-07 Tim Janik # 8efa68ae09d ASE: websocket, jsonapi: allow fine grained logging via logflags Signed-off-by: Tim Janik 2021-08-07 Tim Janik # 6c8b093bc89 ASE: server: add global ServerImpl *SERVER; Signed-off-by: Tim Janik 2021-08-02 Tim Janik # 1415526ee04 ASE: main: provide --list-drivers Signed-off-by: Tim Janik 2021-07-22 Tim Janik # 7238c11c440 ASE: main: support --preload Signed-off-by: Tim Janik 2021-10-14 Tim Janik # ecc60b0a712 Makefile.mk: use ctags-universal to generate $>/TAGS Signed-off-by: Tim Janik 2021-11-09 Tim Janik # 9054d94984c Merge branch 'update-vue-electron' * update-vue-electron: UI: partlist.vue: silence eslint MISC: package.json.in: update Vue, electron, eslint, markdown-it, sass, etc Update to vue-3.2.19 electron-15.1.0 markdown-it-12.2.0 mathjax-3.2.0 eslint-7.32.0 eslint-plugin-html-6.2.0 eslint-plugin-vue-7.18.0 sass-1.42.1 nodemon-2.0.13. Signed-off-by: Tim Janik 2021-08-07 Tim Janik # 1cbc495ab22 UI: partlist.vue: silence eslint Signed-off-by: Tim Janik 2021-10-03 Tim Janik # 85e463bcd93 MISC: package.json.in: update Vue, electron, eslint, markdown-it, sass, etc Update to vue-3.2.19 electron-15.1.0 markdown-it-12.2.0 mathjax-3.2.0 eslint-7.32.0 eslint-plugin-html-6.2.0 eslint-plugin-vue-7.18.0 sass-1.42.1 nodemon-2.0.13. Signed-off-by: Tim Janik 2021-11-09 Tim Janik # 505dd94447d Merge branch 'fix-make-run' * fix-make-run: MISC: checkinsertions.sh: simple tool to grep commit range for keywords ASE: eventlist.hh: fix comment Makefile.mk: run: start Anklang without installation Signed-off-by: Tim Janik 2021-10-03 Tim Janik # 92a26d54ec5 MISC: checkinsertions.sh: simple tool to grep commit range for keywords Signed-off-by: Tim Janik 2021-07-15 Tim Janik # f285f5e9847 ASE: eventlist.hh: fix comment Signed-off-by: Tim Janik 2021-10-03 Tim Janik # d5840119ced Makefile.mk: run: start Anklang without installation Signed-off-by: Tim Janik 2021-09-07 Tim Janik # 5e4d923c3b1 Merge branch 'simplify-version-sh' * simplify-version-sh: DOC: copyright.ini: apply MPL-2.0 to .gitattributes MISC: version.sh: simplify version detection ASE: provide long version string as ase_version() .gitattributes: allow git-archive substitutions for misc/version.sh GITHUB: workflows/testing.yml: omit explicit workflow name Signed-off-by: Tim Janik 2021-09-07 Tim Janik # 0953fe49055 DOC: copyright.ini: apply MPL-2.0 to .gitattributes Signed-off-by: Tim Janik 2021-09-07 Tim Janik # ca54b0b66bc MISC: version.sh: simplify version detection Signed-off-by: Tim Janik 2021-09-07 Tim Janik # f1226e7abff ASE: provide long version string as ase_version() Signed-off-by: Tim Janik 2021-09-07 Tim Janik # e6650f911d9 .gitattributes: allow git-archive substitutions for misc/version.sh Signed-off-by: Tim Janik 2021-09-06 Tim Janik # 6274b36e83b GITHUB: workflows/testing.yml: omit explicit workflow name Signed-off-by: Tim Janik 2021-09-06 Tim Janik # a77a6ed85bf Merge branch 'playback-transport' * playback-transport: UI: b/positionview.vue: adjust to sixteenth telemetry ASE: project.cc: adjust Transport.running and adapt current_sixteenth telemetry UI: b/partlist.vue: disable unfinished logic UI: b/editable.vue: use #000 as input bg and auto-convert "clicks" UI: util.js: remove unused v-inlineblur UI: b/trackview.vue: use b-editable to edit track labels UI: b/contextmenu.vue: prevent spurious enter/leave/etc events during transitions UI: b/editable.vue: allow explicit and double click activation UI: b/positionview.vue: allow BPM changes via b-editable UI: b/positionview.vue: remove unused code UI: b/editable.vue: display an editable ASE: jsonapi.cc: require 'Origin: http://localhost' for socket connections ASE: websocket: provide header() getter for WebSocketConnection::Info ASE: project: implement real BPM setter ASE: properties: support Range() property with explicit getter and setter ASE: api.hh: Gadget: implement list_properties(), get_value(), set_value() UI: b/positionview.vue: add input field UI: b/positionview.vue: move frequent updates into text node UI: b/trackview.vue: avoid @contextmenu propagation out of INPUT field UI: startup.js: allow button3 browser menus in INPUT fields UI: b/positionview.vue: display bar.beat.sixteenth.fraction minutes:seconds UI: util.js: support Int8 telemtry data ASE: project.cc: export current bar/beat/sixteenth, minutes/seconds, etc ASE: project: add autoplay timer ASE: server.hh: add int8 telemetry_type ASE: cxxaux.hh: add divmod() helper ASE: loop: add clear_source() helper UI: util.js: export extend_property() UI: b/positionview.vue: display bpm, numerator, denominator ASE: project: add musical_tuning, dirty, bpm, numerator, denominator properties ASE: server: provide EnumInfo::impl for MusicalTuning ASE: value: add EnumInfo to augment enumerations ASE: properties: add ident, support float Range and extend Enum properties JSONIPC: jsonipc.hh: add Enum<>::list_values() ASE: gadget.cc: implement access_property() in terms of access_properties() ASE: clip.cc: notify about note changes UI: b/positionview.vue: show current_bpm and current_tick ASE: project.cc: provide current_bpm and current_tick as double UI: util.js: remove unused telemetry type "u32" ASE: server.hh: remove unused telemetry type "u32" ASE: api.hh: use 64bit for ticks and duration ASE: engine: leave timing defaults to AudioTransport ctor ASE: engine: use transport->advance() UI: b/*.vue: use Util.PPQN UI: util.js: export PPQN as 4838400 ASE: clip.cc: use TRANSPORT_PPQN ASE: transport: provide TickSignature to handle all AudioTransport timing Squashed commits to introduce TickSignature: Move initialisation into AudioTransport() Use 64bit for ticks and duration Quantize current_tick_d Provide current bar/beat/sixteenth, minutes/seconds Add next_bar_tick() Add TimeSignature class Add set_tick(), tick_from_beat(), tick_from_time() Add TimeSignature tests Change PPQN to 4838400 Add TickSignature for musical time signature and tick conversions Support getters and samplerate in TickSignature Add sample_to_tick() Add TickSignature::sample_from_tick() Provide current_bar_tick, sample_to_tick(), sample_from_tick() Add const to TickSignature methods Add beats_per_bar() and beat_unit() Constrain set_signature() inputs and return changed flag Remove unused numerator and denominator Construct TickSignature with defaults to avoid 0-division Signed-off-by: Tim Janik 2021-08-03 Tim Janik # f24ac9fe709 UI: b/positionview.vue: adjust to sixteenth telemetry Signed-off-by: Tim Janik 2021-08-03 Tim Janik # 6cdf13613b4 ASE: project.cc: adjust Transport.running and adapt current_sixteenth telemetry Signed-off-by: Tim Janik 2021-07-11 Tim Janik # 48629c1ec24 UI: b/partlist.vue: disable unfinished logic Signed-off-by: Tim Janik 2021-07-11 Tim Janik # 365223fda40 UI: b/editable.vue: use #000 as input bg and auto-convert "clicks" Signed-off-by: Tim Janik 2021-07-11 Tim Janik # 05a5f71467d UI: util.js: remove unused v-inlineblur Signed-off-by: Tim Janik 2021-07-11 Tim Janik # b12866d1df8 UI: b/trackview.vue: use b-editable to edit track labels Signed-off-by: Tim Janik 2021-07-11 Tim Janik # 11e5943d2d0 UI: b/contextmenu.vue: prevent spurious enter/leave/etc events during transitions Signed-off-by: Tim Janik 2021-07-11 Tim Janik # e949f33d748 UI: b/editable.vue: allow explicit and double click activation Signed-off-by: Tim Janik 2021-07-11 Tim Janik # 2ef1fc27792 UI: b/positionview.vue: allow BPM changes via b-editable Signed-off-by: Tim Janik 2021-07-11 Tim Janik # 99127f8f983 UI: b/positionview.vue: remove unused code Signed-off-by: Tim Janik 2021-07-11 Tim Janik # c0d74d8e8a2 UI: b/editable.vue: display an editable Signed-off-by: Tim Janik 2021-07-10 Tim Janik # 2a1e8422502 ASE: jsonapi.cc: require 'Origin: http://localhost' for socket connections Signed-off-by: Tim Janik 2021-07-10 Tim Janik # cb622d8c1ea ASE: websocket: provide header() getter for WebSocketConnection::Info Signed-off-by: Tim Janik 2021-07-10 Tim Janik # 62fe5608082 ASE: project: implement real BPM setter Signed-off-by: Tim Janik 2021-07-10 Tim Janik # 9ee14365e38 ASE: properties: support Range() property with explicit getter and setter Signed-off-by: Tim Janik 2021-07-10 Tim Janik # 8eb5e92b043 ASE: api.hh: Gadget: implement list_properties(), get_value(), set_value() Signed-off-by: Tim Janik 2021-07-05 Tim Janik # 3034332ee0a UI: b/positionview.vue: add input field Signed-off-by: Tim Janik 2021-07-05 Tim Janik # caa4577d4bb UI: b/positionview.vue: move frequent updates into text node Signed-off-by: Tim Janik 2021-07-05 Tim Janik # 41695e83408 UI: b/trackview.vue: avoid @contextmenu propagation out of INPUT field Signed-off-by: Tim Janik 2021-07-05 Tim Janik # 98a082a1a42 UI: startup.js: allow button3 browser menus in INPUT fields Signed-off-by: Tim Janik 2021-07-04 Tim Janik # ea52e05dbc0 UI: b/positionview.vue: display bar.beat.sixteenth.fraction minutes:seconds Signed-off-by: Tim Janik 2021-07-04 Tim Janik # d1766e19676 UI: util.js: support Int8 telemtry data Signed-off-by: Tim Janik 2021-07-04 Tim Janik # 14855de3bfc ASE: project.cc: export current bar/beat/sixteenth, minutes/seconds, etc Signed-off-by: Tim Janik 2021-07-04 Tim Janik # 526b64f2b28 ASE: project: add autoplay timer Signed-off-by: Tim Janik 2021-07-04 Tim Janik # d2fb59bff31 ASE: server.hh: add int8 telemetry_type Signed-off-by: Tim Janik 2021-07-04 Tim Janik # 1a453d1e93d ASE: cxxaux.hh: add divmod() helper Signed-off-by: Tim Janik 2021-07-04 Tim Janik # 864d2ee206e ASE: loop: add clear_source() helper Signed-off-by: Tim Janik 2021-06-29 Tim Janik # 95b76984bbe UI: util.js: export extend_property() Signed-off-by: Tim Janik 2021-06-29 Tim Janik # 00def5a6ad4 UI: b/positionview.vue: display bpm, numerator, denominator Signed-off-by: Tim Janik 2021-06-29 Tim Janik # 6b1aaba3bf9 ASE: project: add musical_tuning, dirty, bpm, numerator, denominator properties Signed-off-by: Tim Janik 2021-06-29 Tim Janik # 5bbf3a586ce ASE: server: provide EnumInfo::impl for MusicalTuning Signed-off-by: Tim Janik 2021-06-29 Tim Janik # 509c8f36f51 ASE: value: add EnumInfo to augment enumerations Signed-off-by: Tim Janik 2021-06-29 Tim Janik # 923c4ffe5aa ASE: properties: add ident, support float Range and extend Enum properties Signed-off-by: Tim Janik 2021-06-29 Tim Janik # 6fd7b9c8a22 JSONIPC: jsonipc.hh: add Enum<>::list_values() Signed-off-by: Tim Janik 2021-06-29 Tim Janik # 43b45aacfda ASE: gadget.cc: implement access_property() in terms of access_properties() Signed-off-by: Tim Janik 2021-06-29 Tim Janik # 77eff66f39e ASE: clip.cc: notify about note changes Signed-off-by: Tim Janik 2021-06-27 Tim Janik # 5f7719cf517 UI: b/positionview.vue: show current_bpm and current_tick Signed-off-by: Tim Janik 2021-06-27 Tim Janik # e80c4cd0d9a ASE: project.cc: provide current_bpm and current_tick as double Signed-off-by: Tim Janik 2021-06-27 Tim Janik # df87c016422 UI: util.js: remove unused telemetry type "u32" Signed-off-by: Tim Janik 2021-06-27 Tim Janik # e1f00b54ab5 ASE: server.hh: remove unused telemetry type "u32" Signed-off-by: Tim Janik 2021-06-27 Tim Janik # 479e871d28e ASE: api.hh: use 64bit for ticks and duration Signed-off-by: Tim Janik 2021-06-26 Tim Janik # 737155cdee7 ASE: engine: leave timing defaults to AudioTransport ctor Signed-off-by: Tim Janik 2021-06-26 Tim Janik # fe5e87f3002 ASE: engine: use transport->advance() Signed-off-by: Tim Janik 2021-07-25 Tim Janik # 2c1562deb7e UI: b/*.vue: use Util.PPQN Signed-off-by: Tim Janik 2021-07-25 Tim Janik # 7c9c6e6451e UI: util.js: export PPQN as 4838400 Signed-off-by: Tim Janik 2021-07-25 Tim Janik # 2571f93d30a ASE: clip.cc: use TRANSPORT_PPQN Signed-off-by: Tim Janik 2021-06-26 Tim Janik # 14d8df6472c ASE: transport: provide TickSignature to handle all AudioTransport timing Squashed commits to introduce TickSignature: Move initialisation into AudioTransport() Use 64bit for ticks and duration Quantize current_tick_d Provide current bar/beat/sixteenth, minutes/seconds Add next_bar_tick() Add TimeSignature class Add set_tick(), tick_from_beat(), tick_from_time() Add TimeSignature tests Change PPQN to 4838400 Add TickSignature for musical time signature and tick conversions Support getters and samplerate in TickSignature Add sample_to_tick() Add TickSignature::sample_from_tick() Provide current_bar_tick, sample_to_tick(), sample_from_tick() Add const to TickSignature methods Add beats_per_bar() and beat_unit() Constrain set_signature() inputs and return changed flag Remove unused numerator and denominator Construct TickSignature with defaults to avoid 0-division Signed-off-by: Tim Janik 2021-09-06 Tim Janik # 0f8eb60f06a Merge branch 'jsdoc' * jsdoc: DOC: jsdoc2md.js: fix export prefix for classes DOC: copyright.ini: apply MPL-2 to doc/highlights.theme, ui/jsdocrc.json UI: util.js: improve vue_observable_from_getters() docs UI: startup.js: use VueApp.config.compilerOptions, recommended since Vue-3.1 MISC: package.json.in: update Vue and related packages UI: Makefile.mk: build ui/envuejs.md and add it to the API reference UI: Makefile.mk: build ui/utiljs.md and support triple slash comments UI: jsdocrc.json: load ui/slashcomment as jsdoc plugin UI: slashcomment.js: add plugin to convert triple slash to jsdoc comments DOC: jsdoc2md.js: add anchors to functions DOC: jsdoc2md.js: keept empty lines that serve as block seperators DOC: jsdoc2md.js: support @overview documentation DOC: jsdoc2md.js: generate Constants docs DOC: style/faketex.scss: improve TOC number alignment DOC: jsdoc2md.js: add --help DOC: highlights.theme: turn comments redish and variables/data blueish DOC: Makefile.mk: add highlights.theme to .html and .pdf outputs of pandoc DOC: highlights.theme: generate from: pandoc --print-highlight-style pygments DOC: style/faketex.scss: apply extra spacing to complex definition lists The Latex/PDF renderer automatically adds spacing to definition lists that include nested lists. This keeps command line option lists compact, while spacing out definition lists that describe classes and functions. To reproduce this behaviour in HTML renderering, extra spacing needs to be applied inside of dl:has(dl, ol, ul). Since browsers currently lack support for :has(), the onload.html JS helper can be used to match these lists with dl[data-has-nestedlayout="1"] instead. DOC: Makefile.mk: include onload.html JS snippet before DOC: style/onload.html: set data-has-nestedlayout on dl:has(dl, ol, ul) No browser currently supports the :has() pseudo-class, so this adds a JS workaround to apply styles to definition lists with complex nested layouts. UI: b/ch-vue.md: document template compiler uses UI: Makefile.mk: include docs from util.js in vue-docs.md DOC: jsdoc2md.js: add simple jsdoc to markdown converter MISC: package.json.in: provide jsdoc as build tool MISC: package.json.in: upgrade to electron 13.2.2 UI: startup.js: Chrome-92 still has the movementX devicePixelRatio bug MISC: package.json.in: support AnklangSynthEngine $ASEOPT during 'serve' Signed-off-by: Tim Janik 2021-09-05 Tim Janik # 1ae89f97814 DOC: jsdoc2md.js: fix export prefix for classes Signed-off-by: Tim Janik 2021-09-05 Tim Janik # 39bdaecea37 DOC: copyright.ini: apply MPL-2 to doc/highlights.theme, ui/jsdocrc.json Signed-off-by: Tim Janik 2021-09-05 Tim Janik # 80c5d5e714a UI: util.js: improve vue_observable_from_getters() docs Signed-off-by: Tim Janik 2021-09-01 Tim Janik # 646c1990e06 UI: startup.js: use VueApp.config.compilerOptions, recommended since Vue-3.1 Signed-off-by: Tim Janik 2021-09-01 Tim Janik # 0ab0a28131b MISC: package.json.in: update Vue and related packages Signed-off-by: Tim Janik 2021-08-30 Tim Janik # c57797113a2 UI: Makefile.mk: build ui/envuejs.md and add it to the API reference Signed-off-by: Tim Janik 2021-08-30 Tim Janik # 37bad98fdc6 UI: Makefile.mk: build ui/utiljs.md and support triple slash comments Signed-off-by: Tim Janik 2021-08-30 Tim Janik # f71ecf1dea0 UI: jsdocrc.json: load ui/slashcomment as jsdoc plugin Signed-off-by: Tim Janik 2021-08-30 Tim Janik # 932067ac146 UI: slashcomment.js: add plugin to convert triple slash to jsdoc comments Signed-off-by: Tim Janik 2021-09-02 Tim Janik # 30b3c840075 DOC: jsdoc2md.js: add anchors to functions Signed-off-by: Tim Janik 2021-09-02 Tim Janik # c831efb7675 DOC: jsdoc2md.js: keept empty lines that serve as block seperators Signed-off-by: Tim Janik 2021-08-30 Tim Janik # 1490ff0824f DOC: jsdoc2md.js: support @overview documentation Signed-off-by: Tim Janik 2021-08-30 Tim Janik # 86c559e9928 DOC: jsdoc2md.js: generate Constants docs Signed-off-by: Tim Janik 2021-08-30 Tim Janik # ad01eb0a3f5 DOC: style/faketex.scss: improve TOC number alignment Signed-off-by: Tim Janik 2021-08-29 Tim Janik # fd0d3e306f0 DOC: jsdoc2md.js: add --help Signed-off-by: Tim Janik 2021-08-29 Tim Janik # 03b273d2bf6 DOC: highlights.theme: turn comments redish and variables/data blueish Signed-off-by: Tim Janik 2021-08-29 Tim Janik # 9363d0a9917 DOC: Makefile.mk: add highlights.theme to .html and .pdf outputs of pandoc Signed-off-by: Tim Janik 2021-08-29 Tim Janik # 55380246a3f DOC: highlights.theme: generate from: pandoc --print-highlight-style pygments Signed-off-by: Tim Janik 2021-08-29 Tim Janik # b1074f50f06 DOC: style/faketex.scss: apply extra spacing to complex definition lists The Latex/PDF renderer automatically adds spacing to definition lists that include nested lists. This keeps command line option lists compact, while spacing out definition lists that describe classes and functions. To reproduce this behaviour in HTML renderering, extra spacing needs to be applied inside of dl:has(dl, ol, ul). Since browsers currently lack support for :has(), the onload.html JS helper can be used to match these lists with dl[data-has-nestedlayout="1"] instead. Signed-off-by: Tim Janik 2021-08-29 Tim Janik # b08dba23d2d DOC: Makefile.mk: include onload.html JS snippet before Signed-off-by: Tim Janik 2021-08-29 Tim Janik # 297883dd2d0 DOC: style/onload.html: set data-has-nestedlayout on dl:has(dl, ol, ul) No browser currently supports the :has() pseudo-class, so this adds a JS workaround to apply styles to definition lists with complex nested layouts. Signed-off-by: Tim Janik 2021-08-28 Tim Janik # 6498bc2a245 UI: b/ch-vue.md: document template compiler uses Signed-off-by: Tim Janik 2021-08-28 Tim Janik # 7009f7ee0d6 UI: Makefile.mk: include docs from util.js in vue-docs.md Signed-off-by: Tim Janik 2021-08-28 Tim Janik # 030f900da83 DOC: jsdoc2md.js: add simple jsdoc to markdown converter Signed-off-by: Tim Janik 2021-08-28 Tim Janik # 1e493b399ef MISC: package.json.in: provide jsdoc as build tool Signed-off-by: Tim Janik 2021-08-27 Tim Janik # 7df9dfe73e3 MISC: package.json.in: upgrade to electron 13.2.2 Signed-off-by: Tim Janik 2021-08-27 Tim Janik # 31cf18da763 UI: startup.js: Chrome-92 still has the movementX devicePixelRatio bug Signed-off-by: Tim Janik 2021-07-22 Tim Janik # 2216ab10ca3 MISC: package.json.in: support AnklangSynthEngine $ASEOPT during 'serve' Signed-off-by: Tim Janik 2021-09-06 Tim Janik # 1300284f8ec Merge branch 'ircbot' * ircbot: GITHUB: workflows/testing.yml: cleanup leftovers GITHUB: workflows/notifico.py: remove unused script GITHUB: workflows/testing.yml: use ircbot.py for notifications GITHUB: workflows/ircbot.py: allow colorized NAME DEPARTMENT STATUS prefixing GITHUB: workflows/ircbot.py: add RFC-1459 based simple message IRC bot Signed-off-by: Tim Janik 2021-09-06 Tim Janik # 23b7f25c575 GITHUB: workflows/testing.yml: cleanup leftovers Signed-off-by: Tim Janik 2021-09-06 Tim Janik # f5b88ec38da GITHUB: workflows/notifico.py: remove unused script Signed-off-by: Tim Janik 2021-09-06 Tim Janik # 936e4a2b43b GITHUB: workflows/testing.yml: use ircbot.py for notifications Signed-off-by: Tim Janik 2021-09-06 Tim Janik # 92171153a5b GITHUB: workflows/ircbot.py: allow colorized NAME DEPARTMENT STATUS prefixing Signed-off-by: Tim Janik 2021-09-06 Tim Janik # f3e98a77464 GITHUB: workflows/ircbot.py: add RFC-1459 based simple message IRC bot Signed-off-by: Tim Janik 2021-09-05 Tim Janik # b99c17940a6 Merge branch 'telemetry' * telemetry: UI: startup.js: handle Jsonipc binary messages with jsonipc_binary_handler_ UI: util.js: add telemetry_subscribe() / telemetry_unsubscribe() UI: b/positionview.vue: fetch and print project telemetry UI: b/menubar.vue: provide b-positionview with project ASE: server.hh: add telemetry_field() ASE: api.hh: add TelemetryField and telemetry() queries ASE: transport.hh: add tick_pos ASE: processor.hh: add AudioProcessor.transport() ASE: combo.cc: use static zeros block instead of 0-filling ASE: randomhash: fix fnv1a_consthash64() to not use length as hash value ASE: main: add --jsbin ASE: websocket, jsonapi: add loglevel ASE: engine: allocate AudioTransport from telemetry memory ASE: api.hh: add Server.broadcast_telemetry() ASE: server: pre-allocate 4MB for audio & transport telemetry memory ASE: memory.cc: try locking FastMemory, maybe this should be a flag JSONIPC: jsonipc.js: add Jsonipc.handle_binary() to handle blobs ASE: defs.hh: declare CustomDataContainer ASE: jsonapi: add jsonapi_connection_sender() ASE: websocket: add WebSocketConnection::send_binary() ASE: utils: add CustomDataContainer::custom_data_destroy() ASE: jsonapi: add jsonapi_connection_data() ASE: loop.hh: exec_timer(): default to PRIORITY_NORMAL like all other handlers Signed-off-by: Tim Janik 2021-06-25 Tim Janik # 7759adeb61d UI: startup.js: handle Jsonipc binary messages with jsonipc_binary_handler_ Signed-off-by: Tim Janik 2021-06-25 Tim Janik # 67fe237b7ee UI: util.js: add telemetry_subscribe() / telemetry_unsubscribe() Signed-off-by: Tim Janik 2021-06-25 Tim Janik # 78d1aa278a9 UI: b/positionview.vue: fetch and print project telemetry Signed-off-by: Tim Janik 2021-06-25 Tim Janik # 822206b9665 UI: b/menubar.vue: provide b-positionview with project Signed-off-by: Tim Janik 2021-06-25 Tim Janik # 3ac718b1b97 ASE: server.hh: add telemetry_field() Signed-off-by: Tim Janik 2021-06-25 Tim Janik # e6b678080f0 ASE: api.hh: add TelemetryField and telemetry() queries Signed-off-by: Tim Janik 2021-06-25 Tim Janik # 3a8f8c4bfa6 ASE: transport.hh: add tick_pos Signed-off-by: Tim Janik 2021-06-24 Tim Janik # cce9156aa66 ASE: processor.hh: add AudioProcessor.transport() Signed-off-by: Tim Janik 2021-06-24 Tim Janik # 01361789fb3 ASE: combo.cc: use static zeros block instead of 0-filling Signed-off-by: Tim Janik 2021-06-24 Tim Janik # 9f6b3a95fa1 ASE: randomhash: fix fnv1a_consthash64() to not use length as hash value Signed-off-by: Tim Janik 2021-06-24 Tim Janik # b5852a8a4fc ASE: main: add --jsbin Signed-off-by: Tim Janik 2021-06-24 Tim Janik # 2c5d16d4a6f ASE: websocket, jsonapi: add loglevel Signed-off-by: Tim Janik 2021-06-24 Tim Janik # 4ca8032f156 ASE: engine: allocate AudioTransport from telemetry memory Signed-off-by: Tim Janik 2021-06-23 Tim Janik # cfb474726ae ASE: api.hh: add Server.broadcast_telemetry() Signed-off-by: Tim Janik 2021-06-24 Tim Janik # 6d8077e92ba ASE: server: pre-allocate 4MB for audio & transport telemetry memory Signed-off-by: Tim Janik 2021-06-24 Tim Janik # eafe511ec17 ASE: memory.cc: try locking FastMemory, maybe this should be a flag Signed-off-by: Tim Janik 2021-06-23 Tim Janik # 1fe2eaed575 JSONIPC: jsonipc.js: add Jsonipc.handle_binary() to handle blobs Signed-off-by: Tim Janik 2021-06-23 Tim Janik # 1a044cf8fbb ASE: defs.hh: declare CustomDataContainer Signed-off-by: Tim Janik 2021-06-23 Tim Janik # dd13ab8d73a ASE: jsonapi: add jsonapi_connection_sender() Signed-off-by: Tim Janik 2021-06-23 Tim Janik # 0e94ecb8a83 ASE: websocket: add WebSocketConnection::send_binary() Signed-off-by: Tim Janik 2021-06-23 Tim Janik # d0faaf08566 ASE: utils: add CustomDataContainer::custom_data_destroy() Signed-off-by: Tim Janik 2021-06-23 Tim Janik # 200f7e8ecae ASE: jsonapi: add jsonapi_connection_data() Signed-off-by: Tim Janik 2021-06-23 Tim Janik # 2ab3249d10a ASE: loop.hh: exec_timer(): default to PRIORITY_NORMAL like all other handlers Signed-off-by: Tim Janik 2021-08-16 Tim Janik # e06c1a33ead Merge branch 'mkcopyright.py' * mkcopyright.py: IMAGES: icons: add MPL-2.0 license to SVG files IMAGES: cursors: add MPL-2.0 license to SVG files UI: assets: add MPL-2.0 license to SVG files DOC: copyright.ini: remove svg files MISC: mkcopyright.py: match in XML-like files MISC: mkcopyright.py: omit empty printouts DOC: copyright.ini: apply MPL-2.0 to devices/blepsynth/TODO GITHUB: workflows/testing.yml: add MPL-2.0 license MISC: add MPL-2.0 license JSONIPC: Makefile: add MPL-2.0 license DOC: style/mathjax-config.js: add MPL-2.0 license DOC: style/features.scss: add MPL-2.0 license UI: .eslintrc.js: add MPL-2.0 license DEVICES: blepsynth/bleposcdata.cc: add MPL-2.0 license ASE: mime-types.hh: sort extensions ASE: mime-types.hh: add CC0 Public Domain license DOC: Makefile.mk: generate doc/copyright MISC: Makefile.mk: check-copyright: use doc/copyright.ini DOC: copyright.ini: ignore license files DOC: copyright.ini: add debian/copyright fields DOC: copyright.ini: explicitely list license for some files DOC: copyright: remove file, can be generated with mkcopyright.py MISC: Makefile.mk: add check-copyright if .git is present MISC: config-utils.mk: provide WITHOUTGIT and WITHGIT MISC: mkcopyright.py: support [ignore] section MISC: mkcopyright.py: read debian/copyright headers from INI MISC: mkcopyright.py: add --spdx-licenses, and add all known SPDX licenses MISC: mkcopyright.py: ignore utf-8 decoding errors during file input MISC: mkcopyright.py: add helper script to check and generate copyright list Signed-off-by: Tim Janik 2021-08-16 Tim Janik # 53a0a3afcd5 IMAGES: icons: add MPL-2.0 license to SVG files Signed-off-by: Tim Janik 2021-08-16 Tim Janik # 710056d0a2a IMAGES: cursors: add MPL-2.0 license to SVG files Signed-off-by: Tim Janik 2021-08-16 Tim Janik # e2ee93fde26 UI: assets: add MPL-2.0 license to SVG files Signed-off-by: Tim Janik 2021-08-16 Tim Janik # e173d77aad8 DOC: copyright.ini: remove svg files Signed-off-by: Tim Janik 2021-08-16 Tim Janik # b45274b05f1 MISC: mkcopyright.py: match in XML-like files Signed-off-by: Tim Janik 2021-08-16 Tim Janik # dd3df66c9e7 MISC: mkcopyright.py: omit empty printouts Signed-off-by: Tim Janik 2021-08-16 Tim Janik # 5b49e4fa230 DOC: copyright.ini: apply MPL-2.0 to devices/blepsynth/TODO Signed-off-by: Tim Janik 2021-08-16 Tim Janik # 50e7ddc26c9 GITHUB: workflows/testing.yml: add MPL-2.0 license Signed-off-by: Tim Janik 2021-08-16 Tim Janik # 8e52e5173ea MISC: add MPL-2.0 license Signed-off-by: Tim Janik 2021-08-16 Tim Janik # db204b492a9 JSONIPC: Makefile: add MPL-2.0 license Signed-off-by: Tim Janik 2021-08-16 Tim Janik # b332c7fb30d DOC: style/mathjax-config.js: add MPL-2.0 license Signed-off-by: Tim Janik 2021-08-16 Tim Janik # 849e0540bde DOC: style/features.scss: add MPL-2.0 license Signed-off-by: Tim Janik 2021-08-16 Tim Janik # 8325b0af99d UI: .eslintrc.js: add MPL-2.0 license Signed-off-by: Tim Janik 2021-08-16 Tim Janik # d75065de7af DEVICES: blepsynth/bleposcdata.cc: add MPL-2.0 license Signed-off-by: Tim Janik 2021-08-16 Tim Janik # a6bba376301 ASE: mime-types.hh: sort extensions Signed-off-by: Tim Janik 2021-08-16 Tim Janik # 234aa2b79a2 ASE: mime-types.hh: add CC0 Public Domain license Signed-off-by: Tim Janik 2021-08-15 Tim Janik # d872fcc1b1b DOC: Makefile.mk: generate doc/copyright Signed-off-by: Tim Janik 2021-08-15 Tim Janik # dfccf3dcc14 MISC: Makefile.mk: check-copyright: use doc/copyright.ini Signed-off-by: Tim Janik 2021-08-15 Tim Janik # 3c9477fdf65 DOC: copyright.ini: ignore license files Signed-off-by: Tim Janik 2021-08-15 Tim Janik # a75423296b9 DOC: copyright.ini: add debian/copyright fields Signed-off-by: Tim Janik 2021-08-15 Tim Janik # 4d3e54eddf2 DOC: copyright.ini: explicitely list license for some files Signed-off-by: Tim Janik 2021-08-15 Tim Janik # 07d25ee61a7 DOC: copyright: remove file, can be generated with mkcopyright.py Signed-off-by: Tim Janik 2021-08-14 Tim Janik # d04fb36f5b7 MISC: Makefile.mk: add check-copyright if .git is present Signed-off-by: Tim Janik 2021-08-14 Tim Janik # 9faffdb5661 MISC: config-utils.mk: provide WITHOUTGIT and WITHGIT Signed-off-by: Tim Janik 2021-08-15 Tim Janik # 458c24aa435 MISC: mkcopyright.py: support [ignore] section Signed-off-by: Tim Janik 2021-08-15 Tim Janik # 81b804bda75 MISC: mkcopyright.py: read debian/copyright headers from INI Signed-off-by: Tim Janik 2021-08-15 Tim Janik # 621ece374ae MISC: mkcopyright.py: add --spdx-licenses, and add all known SPDX licenses Signed-off-by: Tim Janik 2021-08-14 Tim Janik # d9982a217a6 MISC: mkcopyright.py: ignore utf-8 decoding errors during file input Signed-off-by: Tim Janik 2021-08-14 Tim Janik # 4fd6a760954 MISC: mkcopyright.py: add helper script to check and generate copyright list Signed-off-by: Tim Janik 2021-06-26 Tim Janik # 00c00a3b65a Merge branch 'start-stop-playback' * start-stop-playback: UI: b/playcontrols.vue: call stop_playback() and start_playback() ASE: project: implement start_playback(), stop_playback(), is_playing() ASE: processor.hh: remove unused AudioTiming ASE: track: maintain a ClipImplS list and use container_copy() ASE: utils.hh: add container_copy() to copy another container's elements ASE: engine.cc: fix initial bpm to be 0 ASE: transport.hh: move samplerate, nyquist, etc into AudioTransport ASE: utils.hh: add insert_sorted() ASE: device.cc: add assertion ASE: cxxaux.cc: assertion_failed(): add breakpoint with ASE_DEBUG=break ASE: transport.hh: move AUDIO_BLOCK_MAX_RENDER_SIZE here ASE: transport: move SpeakerArrangement here ASE: Makefile.mk: silence websocketpp warnings with C++ flag -Wno-sign-promo MISC: config-uname.mk: support EXTRA_CXXFLAGS and EXTRA_CFLAGS Signed-off-by: Tim Janik 2021-06-22 Tim Janik # e83da44d295 UI: b/playcontrols.vue: call stop_playback() and start_playback() Signed-off-by: Tim Janik 2021-06-22 Tim Janik # 3ac819016fc ASE: project: implement start_playback(), stop_playback(), is_playing() Signed-off-by: Tim Janik 2021-06-22 Tim Janik # 0fc514ec956 ASE: processor.hh: remove unused AudioTiming Signed-off-by: Tim Janik 2021-06-22 Tim Janik # afb77a65dd4 ASE: track: maintain a ClipImplS list and use container_copy() Signed-off-by: Tim Janik 2021-06-22 Tim Janik # 62ad229f156 ASE: utils.hh: add container_copy() to copy another container's elements Signed-off-by: Tim Janik 2021-06-22 Tim Janik # 36268e2808a ASE: engine.cc: fix initial bpm to be 0 Signed-off-by: Tim Janik 2021-06-22 Tim Janik # 686683c220a ASE: transport.hh: move samplerate, nyquist, etc into AudioTransport Signed-off-by: Tim Janik 2021-06-22 Tim Janik # 98369da3f71 ASE: utils.hh: add insert_sorted() Signed-off-by: Tim Janik 2021-06-22 Tim Janik # a9b8604c407 ASE: device.cc: add assertion Signed-off-by: Tim Janik 2021-06-22 Tim Janik # 8fc70e7f2a4 ASE: cxxaux.cc: assertion_failed(): add breakpoint with ASE_DEBUG=break Signed-off-by: Tim Janik 2021-06-22 Tim Janik # 49d22c9be85 ASE: transport.hh: move AUDIO_BLOCK_MAX_RENDER_SIZE here Signed-off-by: Tim Janik 2021-06-22 Tim Janik # 30b7c28b9a2 ASE: transport: move SpeakerArrangement here Signed-off-by: Tim Janik 2021-06-21 Tim Janik # fd81ef43b8a ASE: Makefile.mk: silence websocketpp warnings with C++ flag -Wno-sign-promo Signed-off-by: Tim Janik 2021-06-21 Tim Janik # 8fd4ef20a3d MISC: config-uname.mk: support EXTRA_CXXFLAGS and EXTRA_CFLAGS Signed-off-by: Tim Janik 2021-06-26 Tim Janik # 4a71db44239 Merge branch 'clip' * clip: UI: b/: use PPQN=1920 just like ASE ASE: clip.cc: skip internal note fields in serialization ASE: track.cc: serialize clips ASE: clip: serialize notes ASE: clip: implement ClipNote storage ASE: defs.hh: declare ClipImpl ASE: track: implement list_clips() and clip_index() ASE: api.hh: fix missing const ASE: track.hh: ASE: eventlist: add EventList to maintain a sorted array of `Event` structures ASE: object: dispatch events only as long as the on_event() result is alive Once the last reference to the Connection object as returned from on_event() is released, the connection is destroyed and no further invocations of the Connection's handler will occour. ASE: websocket.cc: fix Re::search() invocations ASE: regex.cc: document search() and sub() ASE: driver.cc: fix signedness ASE: object.cc: fix signedness warning ASE: cxxaux.hh: ASE_CLASS_DECLS(Klass) add weak_ptr alias definitions ASE: defs.hh: define and use EventConnectionW UI: b/tracklist.vue: rename b-tracklist from b-track-list UI: b/tracklist.vue: rename file ASE: api.hh: add ClipNote, extend Clip API stubs Signed-off-by: Tim Janik 2021-06-18 Tim Janik # d25e9651d4b UI: b/: use PPQN=1920 just like ASE Signed-off-by: Tim Janik 2021-06-18 Tim Janik # 797ee0b6f26 ASE: clip.cc: skip internal note fields in serialization Signed-off-by: Tim Janik 2021-06-18 Tim Janik # 3c9a5f0cb51 ASE: track.cc: serialize clips Signed-off-by: Tim Janik 2021-06-18 Tim Janik # 83a9feb4d95 ASE: clip: serialize notes Signed-off-by: Tim Janik 2021-06-17 Tim Janik # b31ecc74f9f ASE: clip: implement ClipNote storage Signed-off-by: Tim Janik 2021-06-17 Tim Janik # 6115647b684 ASE: defs.hh: declare ClipImpl Signed-off-by: Tim Janik 2021-06-17 Tim Janik # 18a18955939 ASE: track: implement list_clips() and clip_index() Signed-off-by: Tim Janik 2021-06-17 Tim Janik # 59bf852c49c ASE: api.hh: fix missing const ASE: track.hh: Signed-off-by: Tim Janik 2020-05-28 Tim Janik # f6bf2e23011 ASE: eventlist: add EventList to maintain a sorted array of `Event` structures Signed-off-by: Tim Janik 2021-06-13 Tim Janik # 96ac1d47c6c ASE: object: dispatch events only as long as the on_event() result is alive Once the last reference to the Connection object as returned from on_event() is released, the connection is destroyed and no further invocations of the Connection's handler will occour. Signed-off-by: Tim Janik 2021-06-13 Tim Janik # 317640ec853 ASE: websocket.cc: fix Re::search() invocations Signed-off-by: Tim Janik 2021-06-13 Tim Janik # 679ef325add ASE: regex.cc: document search() and sub() Signed-off-by: Tim Janik 2021-06-13 Tim Janik # fd1f93d1839 ASE: driver.cc: fix signedness Signed-off-by: Tim Janik 2021-06-13 Tim Janik # 4d3476b8dee ASE: object.cc: fix signedness warning Signed-off-by: Tim Janik 2021-06-13 Tim Janik # 1c5263e6cd2 ASE: cxxaux.hh: ASE_CLASS_DECLS(Klass) add weak_ptr alias definitions Signed-off-by: Tim Janik 2021-06-13 Tim Janik # 52e7e20a6d3 ASE: defs.hh: define and use EventConnectionW Signed-off-by: Tim Janik 2021-06-13 Tim Janik # cf73dc937cd UI: b/tracklist.vue: rename b-tracklist from b-track-list Signed-off-by: Tim Janik 2021-06-13 Tim Janik # 7b3b23bff09 UI: b/tracklist.vue: rename file Signed-off-by: Tim Janik 2021-06-12 Tim Janik # d93ebc4e2be ASE: api.hh: add ClipNote, extend Clip API stubs Signed-off-by: Tim Janik 2021-06-20 Tim Janik # dfcde28c460 Merge branch 'notifico' * notifico: GITHUB: workflows/notify_irc.py: remove unused notification script GITHUB: workflows/testing.yml: allow plain text hook usage GITHUB: workflows/testing.yml: issue notifications via notifico.py GITHUB: workflows/notifico.py: add script for IRC notifications via notifico README.md: use web.libera.chat as chat link README.md: extend badges Signed-off-by: Tim Janik 2021-06-18 Tim Janik # ddfc55dbbc6 GITHUB: workflows/notify_irc.py: remove unused notification script Signed-off-by: Tim Janik 2021-06-18 Tim Janik # d3f3613a0f8 GITHUB: workflows/testing.yml: allow plain text hook usage Signed-off-by: Tim Janik 2021-06-18 Tim Janik # 2f99753c484 GITHUB: workflows/testing.yml: issue notifications via notifico.py Signed-off-by: Tim Janik 2021-06-18 Tim Janik # d2da6e07da7 GITHUB: workflows/notifico.py: add script for IRC notifications via notifico Signed-off-by: Tim Janik 2021-06-17 Tim Janik # 5cd707b0809 README.md: use web.libera.chat as chat link Signed-off-by: Tim Janik 2021-06-13 Tim Janik # 33ae34c6bfa README.md: extend badges Signed-off-by: Tim Janik 2021-06-12 Tim Janik # 2a237afda57 Merge branch 'modal-dialogs' * modal-dialogs: UI: b/dialog.vue: slightly expand min-width UI: b/shell.vue: make message popup buttons homogeneous UI: startup.js: prevent Web Browser menus interfering with the UI UI: b/shell.vue: add comment about ../styles.scss import UI: b/noteboard.vue: fix duplicate styles.scss import UI: styles.scss: move grid CSS decls here The file theme.scss must only define SCSS variables and mixins, real CSS definitions belong into styles.scss which isn't included by every component. UI: b/fed-switch.vue: allow numeric input values UI: b/*.vue: Vue-3 does not need .native event qualifiers UI: util.js: remove unused dom_ondestroy() UI: b/fed-object.vue: handle disconnector calls directly UI: util.js: remove now unused ModalShield UI: b/color-picker.vue: use b-contextmenu for the popup UI: b/contextmenu.vue: add popupclass for reparented CSS styling UI: b/contextmenu.vue: move into modal menu layer, fix transitions and shield UI: b/shell.vue: provide layer for modal menus UI: util.js: setup_shield_element: move ESCAPE handling into focus_root This fixes ESCAPE handling so it honours the focus_root stacking order. UI: util.js: rewrite dom_update() handling, add dom_create() UI: b/dialog.vue: adjust fading UI: util.js: remove unused dom_hidden() handling UI: b/menubar.vue: navigate to 'about:blank' after window.close() in browsers UI: b/modaldialog.vue: remove unused component UI: styles.scss, theme.scss: remove b-modaldialog-shield styling UI: b/shell.vue: use for modal message popups UI: b/treeselector.vue: remove unused CSS UI: b/filedialog.vue: improve chome -layout-bug workaround UI: b/filedialog.vue: use as base component UI: util.js: fix lower case tag name UI: b/preferencesdialog.vue: use as base component UI: b/aboutdialog.vue: use as base component UI: b/shell.vue: prepare stacking order for new modal dialogs UI: b/shell.vue: turn info panel title into a focusable link UI: b/shell.vue: disable text selection for normal UI elements UI: b/dialog.vue: introduce new base component for (modal) dialogs UI: util.js: add setup_shield_element() UI: util.js: disable hotkeys while focus_guard is active UI: util.js: rename vm_scope_style() UI: theme.scss: tone down modal overlays Signed-off-by: Tim Janik 2021-06-10 Tim Janik # 4f599899705 UI: b/dialog.vue: slightly expand min-width Signed-off-by: Tim Janik 2021-06-10 Tim Janik # ef01e15f926 UI: b/shell.vue: make message popup buttons homogeneous Signed-off-by: Tim Janik 2021-06-10 Tim Janik # 577109c3e40 UI: startup.js: prevent Web Browser menus interfering with the UI Signed-off-by: Tim Janik 2021-06-10 Tim Janik # 90b3f0b112e UI: b/shell.vue: add comment about ../styles.scss import Signed-off-by: Tim Janik 2021-06-10 Tim Janik # 68e2d52665d UI: b/noteboard.vue: fix duplicate styles.scss import Signed-off-by: Tim Janik 2021-06-10 Tim Janik # 6366e525220 UI: styles.scss: move grid CSS decls here The file theme.scss must only define SCSS variables and mixins, real CSS definitions belong into styles.scss which isn't included by every component. Signed-off-by: Tim Janik 2021-06-10 Tim Janik # 31a6efa8ba2 UI: b/fed-switch.vue: allow numeric input values Signed-off-by: Tim Janik 2021-06-10 Tim Janik # ce26e4e0efd UI: b/*.vue: Vue-3 does not need .native event qualifiers Signed-off-by: Tim Janik 2021-06-10 Tim Janik # d1c5c6d78d7 UI: util.js: remove unused dom_ondestroy() Signed-off-by: Tim Janik 2021-06-10 Tim Janik # 74b958b5175 UI: b/fed-object.vue: handle disconnector calls directly Signed-off-by: Tim Janik 2021-06-10 Tim Janik # 0f9e359ab96 UI: util.js: remove now unused ModalShield Signed-off-by: Tim Janik 2021-06-10 Tim Janik # 3d30497b6b9 UI: b/color-picker.vue: use b-contextmenu for the popup Signed-off-by: Tim Janik 2021-06-10 Tim Janik # 07adc90f33a UI: b/contextmenu.vue: add popupclass for reparented CSS styling Signed-off-by: Tim Janik 2021-06-10 Tim Janik # 8e3b815a177 UI: b/contextmenu.vue: move into modal menu layer, fix transitions and shield Signed-off-by: Tim Janik 2021-06-10 Tim Janik # b93d98e98bc UI: b/shell.vue: provide layer for modal menus Signed-off-by: Tim Janik 2021-06-10 Tim Janik # 49dbdc95b3a UI: util.js: setup_shield_element: move ESCAPE handling into focus_root This fixes ESCAPE handling so it honours the focus_root stacking order. Signed-off-by: Tim Janik 2021-06-09 Tim Janik # de6d5948827 UI: util.js: rewrite dom_update() handling, add dom_create() Signed-off-by: Tim Janik 2021-06-09 Tim Janik # 0185bce7b56 UI: b/dialog.vue: adjust fading Signed-off-by: Tim Janik 2021-06-09 Tim Janik # 2049c820d36 UI: util.js: remove unused dom_hidden() handling Signed-off-by: Tim Janik 2021-06-08 Tim Janik # fd31463af00 UI: b/menubar.vue: navigate to 'about:blank' after window.close() in browsers Signed-off-by: Tim Janik 2021-06-08 Tim Janik # e4b91777817 UI: b/modaldialog.vue: remove unused component Signed-off-by: Tim Janik 2021-06-08 Tim Janik # b387f8d2ba7 UI: styles.scss, theme.scss: remove b-modaldialog-shield styling Signed-off-by: Tim Janik 2021-06-08 Tim Janik # f2a77d4480c UI: b/shell.vue: use for modal message popups Signed-off-by: Tim Janik 2021-06-08 Tim Janik # 358fb9c88fd UI: b/treeselector.vue: remove unused CSS Signed-off-by: Tim Janik 2021-06-08 Tim Janik # cb502399523 UI: b/filedialog.vue: improve chome -layout-bug workaround Signed-off-by: Tim Janik 2021-06-08 Tim Janik # 60df1decf8e UI: b/filedialog.vue: use as base component Signed-off-by: Tim Janik 2021-06-08 Tim Janik # 93b8f347b5e UI: util.js: fix lower case tag name Signed-off-by: Tim Janik 2021-06-08 Tim Janik # b0dcc97b276 UI: b/preferencesdialog.vue: use as base component Signed-off-by: Tim Janik 2021-06-08 Tim Janik # 5671c36daed UI: b/aboutdialog.vue: use as base component Signed-off-by: Tim Janik 2021-06-08 Tim Janik # da3bcdea100 UI: b/shell.vue: prepare stacking order for new modal dialogs Signed-off-by: Tim Janik 2021-06-08 Tim Janik # b72daa0cebc UI: b/shell.vue: turn info panel title into a focusable link Signed-off-by: Tim Janik 2021-06-08 Tim Janik # eccfeb26664 UI: b/shell.vue: disable text selection for normal UI elements Signed-off-by: Tim Janik 2021-06-08 Tim Janik # b70184deecb UI: b/dialog.vue: introduce new base component for (modal) dialogs Signed-off-by: Tim Janik 2021-06-08 Tim Janik # e282cf20317 UI: util.js: add setup_shield_element() Signed-off-by: Tim Janik 2021-06-08 Tim Janik # b05669a2237 UI: util.js: disable hotkeys while focus_guard is active Signed-off-by: Tim Janik 2021-06-08 Tim Janik # b217cbaf17a UI: util.js: rename vm_scope_style() Signed-off-by: Tim Janik 2021-06-08 Tim Janik # f4d0bb7fc35 UI: theme.scss: tone down modal overlays Signed-off-by: Tim Janik 2021-06-12 Tim Janik # b4e9ed107ef Merge branch 'ci-testing' * ci-testing: GITHUB: workflows/testing.yml: merge with IRC notification ASE: driver-alsa.cc: gracefully handle absence of the ALSA sequencer device ASE: driver-alsa.cc: use ADEBUG() to output ALSA errors README.md: add unit test badges GITHUB: workflows/testing.yml: make dockerized build and run make check GITHUB: workflows/testing.yml: add action for unit testing Signed-off-by: Tim Janik 2021-06-12 Tim Janik # 7a365508cda GITHUB: workflows/testing.yml: merge with IRC notification Signed-off-by: Tim Janik 2021-06-12 Tim Janik # 12eca1774db ASE: driver-alsa.cc: gracefully handle absence of the ALSA sequencer device Signed-off-by: Tim Janik 2021-06-12 Tim Janik # 0fb1d05f358 ASE: driver-alsa.cc: use ADEBUG() to output ALSA errors Signed-off-by: Tim Janik 2021-06-12 Tim Janik # b7dbe859696 README.md: add unit test badges Signed-off-by: Tim Janik 2021-06-12 Tim Janik # 6b5e1b64d8f GITHUB: workflows/testing.yml: make dockerized build and run make check Signed-off-by: Tim Janik 2021-06-12 Tim Janik # bf33e768f95 GITHUB: workflows/testing.yml: add action for unit testing Signed-off-by: Tim Janik 2021-06-12 Tim Janik # aa8a9fc3138 Merge branch 'note-board' * note-board: UI: b/shell.vue: handle server.usernote messages UI: b/noteboard.vue: adjust Error/Warning/Info/Debug colors ASE: engine.cc: send user_note()s for Device IO problems ASE: api.hh, server: add user_note() and user_reply() ASE: engine.cc: trigger wakeups for missing ipc_dispatch() calls ASE: driver.hh: move DriverEntry here, out of public API UI: b/noteboard.vue: raise noteboard when new notes are added UI: b/noteboard.vue: move Note Board logic into its own vue component UI: util.js: add envue_object() UI: startup.js: Chrome-91 still has the movementX devicePixelRatio bug Signed-off-by: Tim Janik 2021-06-07 Tim Janik # 186703e9132 UI: b/shell.vue: handle server.usernote messages Signed-off-by: Tim Janik 2021-06-07 Tim Janik # 9fade6f2158 UI: b/noteboard.vue: adjust Error/Warning/Info/Debug colors Signed-off-by: Tim Janik 2021-06-07 Tim Janik # 92a9db6b18e ASE: engine.cc: send user_note()s for Device IO problems Signed-off-by: Tim Janik 2021-06-07 Tim Janik # 0222dde9385 ASE: api.hh, server: add user_note() and user_reply() Signed-off-by: Tim Janik 2021-06-04 Tim Janik # a028cc4b866 ASE: engine.cc: trigger wakeups for missing ipc_dispatch() calls Signed-off-by: Tim Janik 2021-06-03 Tim Janik # 07c33f96cf3 ASE: driver.hh: move DriverEntry here, out of public API Signed-off-by: Tim Janik 2021-06-03 Tim Janik # c8344f8458e UI: b/noteboard.vue: raise noteboard when new notes are added Signed-off-by: Tim Janik 2021-06-03 Tim Janik # be3100c4942 UI: b/noteboard.vue: move Note Board logic into its own vue component Signed-off-by: Tim Janik 2021-06-03 Tim Janik # 3a3e9102145 UI: util.js: add envue_object() Signed-off-by: Tim Janik 2021-06-03 Tim Janik # 0a53599a598 UI: startup.js: Chrome-91 still has the movementX devicePixelRatio bug Signed-off-by: Tim Janik 2021-06-07 Tim Janik # 42dbe58c065 Merge branch 'dbuild-dockerfile-apt' * dbuild-dockerfile-apt: MISC: dbuild.sh: provide git-common-dir volume for git-worktree MISC: Makefile.mk: use just linuxdeploy-x86_64.AppImage --appimage-extract-and-run MISC: Makefile.mk: build appimage with appimage-runtime-zstd MISC: Dockerfile-apt: add squashfs-tools MISC: Makefile.mk: properly disable useless linuxdeploy copyright searches MISC: dbuild.sh: utilize cached anklang downloads MISC: Dockerfile-apt: provide ccache MISC: Dockerfile-apt: cleaner setup for user "dbuild" MISC: Dockerfile-apt: allow documentation files during package installations MISC: Dockerfile-apt: shorten retry timeouts MISC: Dockerfile-apt: remove fixed WORKDIR MISC: Dockerfile-apt: rename .cache.dbuild/ MISC: Dockerfile-apt: base the image on $DIST MISC: Dockerfile-apt: rename from Dockerfile-focal MISC: dbuild.sh: allow -d and rename misc/.dbuild/.cache/ MISC: dbuild.sh: rename from cbuild.sh Signed-off-by: Tim Janik 2021-06-07 Tim Janik # da36733c5e2 MISC: dbuild.sh: provide git-common-dir volume for git-worktree Signed-off-by: Tim Janik 2021-06-07 Tim Janik # 63b278bfae4 MISC: Makefile.mk: use just linuxdeploy-x86_64.AppImage --appimage-extract-and-run Signed-off-by: Tim Janik 2021-06-07 Tim Janik # 2142ac57782 MISC: Makefile.mk: build appimage with appimage-runtime-zstd Signed-off-by: Tim Janik 2021-06-07 Tim Janik # 28ac29cb531 MISC: Dockerfile-apt: add squashfs-tools Signed-off-by: Tim Janik 2021-06-07 Tim Janik # dfa51ed1c58 MISC: Makefile.mk: properly disable useless linuxdeploy copyright searches Signed-off-by: Tim Janik 2021-06-07 Tim Janik # dd3c88d3d08 MISC: dbuild.sh: utilize cached anklang downloads Signed-off-by: Tim Janik 2021-06-07 Tim Janik # 3d43340f843 MISC: Dockerfile-apt: provide ccache Signed-off-by: Tim Janik 2021-06-06 Tim Janik # 20370a560d9 MISC: Dockerfile-apt: cleaner setup for user "dbuild" Signed-off-by: Tim Janik 2021-06-06 Tim Janik # a02f04c7765 MISC: Dockerfile-apt: allow documentation files during package installations Signed-off-by: Tim Janik 2021-06-06 Tim Janik # 3491cb7e694 MISC: Dockerfile-apt: shorten retry timeouts Signed-off-by: Tim Janik 2021-06-06 Tim Janik # 302222909df MISC: Dockerfile-apt: remove fixed WORKDIR Signed-off-by: Tim Janik 2021-06-06 Tim Janik # 7b32eefdeb6 MISC: Dockerfile-apt: rename .cache.dbuild/ Signed-off-by: Tim Janik 2021-06-06 Tim Janik # 609284ea071 MISC: Dockerfile-apt: base the image on $DIST Signed-off-by: Tim Janik 2021-06-06 Tim Janik # 102eb3bde64 MISC: Dockerfile-apt: rename from Dockerfile-focal Signed-off-by: Tim Janik 2021-06-06 Tim Janik # 80c8b3458c9 MISC: dbuild.sh: allow -d and rename misc/.dbuild/.cache/ Signed-off-by: Tim Janik 2021-06-06 Tim Janik # 0288651280f MISC: dbuild.sh: rename from cbuild.sh Signed-off-by: Tim Janik 2021-06-07 Tim Janik # 5dcb1a0af69 Merge branch 'quitstartup' * quitstartup: UI: startup.js: exit cleanly on --quitstartup ELECTRON: main.js: tidy up exit logic so exitcode!=0 is reliable UI: startup.js: exit early on --quitstartup During development, this option is helpful for startup time measurements. ELECTRON: main.js: add --quitstartup argument Signed-off-by: Tim Janik 2021-06-07 Tim Janik # af7718b6508 UI: startup.js: exit cleanly on --quitstartup Signed-off-by: Tim Janik 2021-06-07 Tim Janik # b9a1eee7361 ELECTRON: main.js: tidy up exit logic so exitcode!=0 is reliable Signed-off-by: Tim Janik 2021-06-06 Tim Janik # d23993032b9 UI: startup.js: exit early on --quitstartup During development, this option is helpful for startup time measurements. Signed-off-by: Tim Janik 2021-06-06 Tim Janik # d2b9973e5a4 ELECTRON: main.js: add --quitstartup argument Signed-off-by: Tim Janik 2021-06-07 Tim Janik # f36724061cd Merge branch 'build-fixes' * build-fixes: MISC: Makefile.mk: remove prefix assertion for appimage builds MISC: anklang.desktop: remove category dup MISC: anklang.desktop: allow anklang icon lookups without extension UI: Makefile.mk: provide explicit dependency for ui/anklang.png UI: b/aboutdialog.vue: use CONFIG.buildid UI: Makefile.mk: use $(PACKAGE_VERSIONS) Makefile.mk: rename $(version_buildid) Signed-off-by: Tim Janik 2021-06-05 Tim Janik # b1b2322f814 MISC: Makefile.mk: remove prefix assertion for appimage builds Signed-off-by: Tim Janik 2021-06-05 Tim Janik # 9f3fa5a5102 MISC: anklang.desktop: remove category dup Signed-off-by: Tim Janik 2021-06-05 Tim Janik # 88dd9bffd9e MISC: anklang.desktop: allow anklang icon lookups without extension Signed-off-by: Tim Janik 2021-06-03 Tim Janik # b88fb41653d UI: Makefile.mk: provide explicit dependency for ui/anklang.png Signed-off-by: Tim Janik 2021-06-03 Tim Janik # f9aa6be4ce2 UI: b/aboutdialog.vue: use CONFIG.buildid Signed-off-by: Tim Janik 2021-06-03 Tim Janik # e4076f788b4 UI: Makefile.mk: use $(PACKAGE_VERSIONS) Signed-off-by: Tim Janik 2021-06-03 Tim Janik # 924fbf87e33 Makefile.mk: rename $(version_buildid) Signed-off-by: Tim Janik 2021-06-01 Tim Janik # a0f719692ea Merge branch 'copyright-file' * copyright-file: DOC: Makefile.mk: install doc/copyright DOC: Makefile.mk: use pkgdocdir Makefile.mk: define pkgdocdir DOC: copyright: describe files where MPL-2.0 applies ELECTRON: main.js, preload.js: fix license to MPL-2.0 Signed-off-by: Tim Janik 2021-05-30 Tim Janik # 2a1321b2d35 DOC: Makefile.mk: install doc/copyright Signed-off-by: Tim Janik 2021-05-30 Tim Janik # 1a4da60c916 DOC: Makefile.mk: use pkgdocdir Signed-off-by: Tim Janik 2021-05-30 Tim Janik # 117495b1100 Makefile.mk: define pkgdocdir Signed-off-by: Tim Janik 2021-05-30 Tim Janik # 07884371620 DOC: copyright: describe files where MPL-2.0 applies Signed-off-by: Tim Janik 2021-05-30 Tim Janik # 3733732cc35 ELECTRON: main.js, preload.js: fix license to MPL-2.0 Signed-off-by: Tim Janik 2021-06-01 Tim Janik # 7098f307a7e Merge branch 'make-deb' * make-deb: MISC: Makefile.mk: install anklang.desktop anklang.svg mime/.../anklang.xml MISC: mkdeb.sh: add comment for /opt installations MISC: mkdeb.sh: add script to build anklang__.deb ELECTRON: Makefile.mk: remove unneeded permissions DOC: Makefile.mk: install relative link to man1/anklang.1 MISC: anklang.desktop: fix path, improve comment and keywords MISC: Makefile.mk: install anklang.xml, expand pkgdir in anklang.desktop MISC: anklang-mime.xml: map *.anklang to application/x-anklang ELECTRON: Makefile.mk: fix installation directory ELECTRON: main.js: provide window icon ELECTRON: Makefile.mk: install $(bindir)/anklang alias Makefile.mk: rename sharedir Makefile.mk: rename pkglibdir to pkgdir Makefile.mk: rename pkgrootdir to pkgprefix Signed-off-by: Tim Janik 2021-05-30 Tim Janik # c620697359d MISC: Makefile.mk: install anklang.desktop anklang.svg mime/.../anklang.xml Signed-off-by: Tim Janik 2021-05-30 Tim Janik # fbcd5c7a45e MISC: mkdeb.sh: add comment for /opt installations Signed-off-by: Tim Janik 2021-05-30 Tim Janik # 6e801ba910e MISC: mkdeb.sh: add script to build anklang__.deb Signed-off-by: Tim Janik 2021-05-30 Tim Janik # 538645aa8ab ELECTRON: Makefile.mk: remove unneeded permissions Signed-off-by: Tim Janik 2021-05-30 Tim Janik # 6dd614343e5 DOC: Makefile.mk: install relative link to man1/anklang.1 Signed-off-by: Tim Janik 2021-05-30 Tim Janik # c014fff177e MISC: anklang.desktop: fix path, improve comment and keywords Signed-off-by: Tim Janik 2021-05-30 Tim Janik # 2971b26b9ac MISC: Makefile.mk: install anklang.xml, expand pkgdir in anklang.desktop Signed-off-by: Tim Janik 2021-05-30 Tim Janik # 178503db125 MISC: anklang-mime.xml: map *.anklang to application/x-anklang Signed-off-by: Tim Janik 2021-05-30 Tim Janik # b55cda2d72d ELECTRON: Makefile.mk: fix installation directory Signed-off-by: Tim Janik 2021-05-30 Tim Janik # c3735f0b09c ELECTRON: main.js: provide window icon Signed-off-by: Tim Janik 2021-05-29 Tim Janik # f4550cb84e8 ELECTRON: Makefile.mk: install $(bindir)/anklang alias Signed-off-by: Tim Janik 2021-05-29 Tim Janik # da052b1259e Makefile.mk: rename sharedir Signed-off-by: Tim Janik 2021-05-29 Tim Janik # 85273093dcc Makefile.mk: rename pkglibdir to pkgdir Signed-off-by: Tim Janik 2021-05-29 Tim Janik # 4034a87469f Makefile.mk: rename pkgrootdir to pkgprefix Signed-off-by: Tim Janik 2021-06-01 Tim Janik # f8a782e0493 Merge branch 'man-page' * man-page: DOC: Makefile.mk: install symlink for man1/anklang.1 DOC: Makefile.mk: integrate manual pages into the manual DOC: filt-man.py: add pandoc filter for manual pages as flow text DOC: Makefile.mk: build and install anklang.1 DOC: anklang.1.md: add manual page for Anklang README.md: add Usage, improve readability DOC: Makefile.mk: add NEWS and README to docs, build .html variants Signed-off-by: Tim Janik 2021-05-29 Tim Janik # 90eac3017a8 DOC: Makefile.mk: install symlink for man1/anklang.1 Signed-off-by: Tim Janik 2021-05-29 Tim Janik # bd9aea43e06 DOC: Makefile.mk: integrate manual pages into the manual Signed-off-by: Tim Janik 2021-05-29 Tim Janik # 0c66d318fea DOC: filt-man.py: add pandoc filter for manual pages as flow text Signed-off-by: Tim Janik 2021-05-29 Tim Janik # 4e9029b0df4 DOC: Makefile.mk: build and install anklang.1 Signed-off-by: Tim Janik 2021-05-29 Tim Janik # 14c88be3e8f DOC: anklang.1.md: add manual page for Anklang Signed-off-by: Tim Janik 2021-05-29 Tim Janik # 4ea95f50553 README.md: add Usage, improve readability Signed-off-by: Tim Janik 2021-05-29 Tim Janik # 5d565505be8 DOC: Makefile.mk: add NEWS and README to docs, build .html variants Signed-off-by: Tim Janik 2021-06-01 Tim Janik # fb26c0a454b Merge branch 'appimage-builds' * appimage-builds: MISC: Makefile.mk: fix appimage comments UI: Makefile.mk: fix *.png double install MISC: Makefile.mk: appimage: restore bin/* links MISC: Makefile.mk: add appimage rule MISC: Makefile.mk: provide linuxdeploy and appimagetool MISC: Makefile.mk: install anklang.desktop MISC: anklang.desktop: add desktop file for AppImage builds UI: Makefile.mk: keep an anklang.png image from icon builds MISC: AppRun: add startup script for AppImage builds Signed-off-by: Tim Janik 2021-05-28 Tim Janik # e2b88711ed3 MISC: Makefile.mk: fix appimage comments Signed-off-by: Tim Janik 2021-05-28 Tim Janik # 5e548b318fc UI: Makefile.mk: fix *.png double install Signed-off-by: Tim Janik 2021-05-28 Tim Janik # 5df15190206 MISC: Makefile.mk: appimage: restore bin/* links Signed-off-by: Tim Janik 2021-05-28 Tim Janik # 6db5b22299d MISC: Makefile.mk: add appimage rule Signed-off-by: Tim Janik 2021-05-28 Tim Janik # fd96717add6 MISC: Makefile.mk: provide linuxdeploy and appimagetool Signed-off-by: Tim Janik 2021-05-28 Tim Janik # d961fe76662 MISC: Makefile.mk: install anklang.desktop Signed-off-by: Tim Janik 2021-05-28 Tim Janik # 4f362bc798c MISC: anklang.desktop: add desktop file for AppImage builds Signed-off-by: Tim Janik 2021-05-28 Tim Janik # 44e0fc374cc UI: Makefile.mk: keep an anklang.png image from icon builds Signed-off-by: Tim Janik 2021-05-28 Tim Janik # 8e7e1057814 MISC: AppRun: add startup script for AppImage builds Signed-off-by: Tim Janik 2021-06-01 Tim Janik # 322dffc26c3 Merge branch 'version-sh' * version-sh: MISC: version.sh: silently handle the case where no tags are found MISC: version.sh: prefer COMMIT_DATE over NEWS_DATE MISC: version.sh: remove short/long/date options Signed-off-by: Tim Janik 2021-06-01 Tim Janik # be6793fea74 MISC: version.sh: silently handle the case where no tags are found Signed-off-by: Tim Janik 2021-06-01 Tim Janik # 25a17feef08 MISC: version.sh: prefer COMMIT_DATE over NEWS_DATE Signed-off-by: Tim Janik 2021-06-01 Tim Janik # 77173b6a4d5 MISC: version.sh: remove short/long/date options Signed-off-by: Tim Janik 2021-06-01 Tim Janik # 4decf99397a Merge branch 'ghnotify-irc' * ghnotify-irc: .GITHUB: workflows/ghnotify.yml: notify IRC on git push .GITHUB: workflows/notify_irc.py: support abbreviated messages .GITHUB: workflows/notify_irc.py: add missing Copyright .GITHUB: workflows/notify_irc.py: add rectalogic/notify-irc/notify_irc.py Source: https://github.com/rectalogic/notify-irc/blob/e58c048739ce0c3da8990b49a3e2b4f8108d6292/notify_irc.py Signed-off-by: Tim Janik 2021-05-31 Tim Janik # 486e6056038 .GITHUB: workflows/ghnotify.yml: notify IRC on git push Signed-off-by: Tim Janik 2021-06-01 Tim Janik # d61f97f81e8 .GITHUB: workflows/notify_irc.py: support abbreviated messages Signed-off-by: Tim Janik 2021-06-01 Tim Janik # 4993eae67a2 .GITHUB: workflows/notify_irc.py: add missing Copyright Signed-off-by: Tim Janik 2021-06-01 Andrew Wason # 0117b49e1f4 .GITHUB: workflows/notify_irc.py: add rectalogic/notify-irc/notify_irc.py Source: https://github.com/rectalogic/notify-irc/blob/e58c048739ce0c3da8990b49a3e2b4f8108d6292/notify_irc.py Signed-off-by: Tim Janik 2021-05-29 Tim Janik # 97ccff9e993 Merge branch 'docker-builds' * docker-builds: MISC: Dockerfile-focal: electron also depends on libnss3 libgtk-3-0 MISC: cbuild.sh: add tool for docker based builds MISC: Dockerfile-focal: add Dockerfile for release builds MISC: config-external.mk: provide minizip for ase/minizip.c Signed-off-by: Tim Janik 2021-05-28 Tim Janik # 525457e6ee8 MISC: Dockerfile-focal: electron also depends on libnss3 libgtk-3-0 Signed-off-by: Tim Janik 2021-05-28 Tim Janik # ea371c44f40 MISC: cbuild.sh: add tool for docker based builds Signed-off-by: Tim Janik 2021-05-28 Tim Janik # e761499a2f0 MISC: Dockerfile-focal: add Dockerfile for release builds Signed-off-by: Tim Janik 2021-05-28 Tim Janik # 375ef22f709 MISC: config-external.mk: provide minizip for ase/minizip.c Signed-off-by: Tim Janik 2021-05-29 Tim Janik # 8ae3775af9d Merge branch 'make-install' * make-install: UI: Makefile.mk: install ui/doc link DOC: style/Makefile.mk: install all files and embed CSS source-map DOC: Makefile.mk: install doc/anklang-manual.html ELECTRON: Makefile.mk: install electron and bin/ alias Makefile.mk: uninstall: cleanup main install dir MISC: config-checks.mk: add silent $(RMDIR_P) UI: Makefile.mk: install ui/ DOC: style/Makefile.mk: fix installation directory MISC: config-uname.mk: uninstall empty directories if possible UI: Makefile.mk: avoid scss copies, use includes MISC: package.json.in: use .eslint.files for eslint UI: Makefile.mk: use dot prefix for .eslint.files build file UI: Makefile.mk: remove unused .aseignore line MISC: package.json.in: nodemon: remove useless lib/ dir watch UI: Makefile.mk: remove unused nodemon.json UI: Makefile.mk: remove unused build artefact UI: Makefile.mk: cleanup tmp build dirs Signed-off-by: Tim Janik 2021-05-28 Tim Janik # 4267b5efa0f UI: Makefile.mk: install ui/doc link Signed-off-by: Tim Janik 2021-05-28 Tim Janik # 5fe1d7a22f7 DOC: style/Makefile.mk: install all files and embed CSS source-map Signed-off-by: Tim Janik 2021-05-28 Tim Janik # 4920e64dda3 DOC: Makefile.mk: install doc/anklang-manual.html Signed-off-by: Tim Janik 2021-05-27 Tim Janik # f374d014806 ELECTRON: Makefile.mk: install electron and bin/ alias Signed-off-by: Tim Janik 2021-05-27 Tim Janik # a6d2e2e7854 Makefile.mk: uninstall: cleanup main install dir Signed-off-by: Tim Janik 2021-05-27 Tim Janik # e67cf18b74f MISC: config-checks.mk: add silent $(RMDIR_P) Signed-off-by: Tim Janik 2021-05-27 Tim Janik # 61fba1fc1da UI: Makefile.mk: install ui/ Signed-off-by: Tim Janik 2021-05-27 Tim Janik # 1a3ef72cca5 DOC: style/Makefile.mk: fix installation directory Signed-off-by: Tim Janik 2021-05-27 Tim Janik # c35c5bb2102 MISC: config-uname.mk: uninstall empty directories if possible Signed-off-by: Tim Janik 2021-05-27 Tim Janik # 172b6989e23 UI: Makefile.mk: avoid scss copies, use includes Signed-off-by: Tim Janik 2021-05-27 Tim Janik # c0165126fa4 MISC: package.json.in: use .eslint.files for eslint Signed-off-by: Tim Janik 2021-05-27 Tim Janik # c8e17751f3d UI: Makefile.mk: use dot prefix for .eslint.files build file Signed-off-by: Tim Janik 2021-05-27 Tim Janik # 4cec6b0e2a9 UI: Makefile.mk: remove unused .aseignore line Signed-off-by: Tim Janik 2021-05-27 Tim Janik # 56bb5aa7762 MISC: package.json.in: nodemon: remove useless lib/ dir watch Signed-off-by: Tim Janik 2021-05-27 Tim Janik # dec17cef1c2 UI: Makefile.mk: remove unused nodemon.json Signed-off-by: Tim Janik 2021-05-27 Tim Janik # 7b4de98773d UI: Makefile.mk: remove unused build artefact Signed-off-by: Tim Janik 2021-05-27 Tim Janik # c7758ff197c UI: Makefile.mk: cleanup tmp build dirs Signed-off-by: Tim Janik 2021-05-28 Tim Janik # 0f37a5bb246 Merge branch 'npm-updates' * npm-updates: UI: .eslintrc.js: whitespace fixups UI: b/*.vue: use math.div() instead of '/' for division UI: cssaux.scss: add divfactor() helper for 1/asfactor() UI: theme.scss: use math.div() instead of '/' for division UI: cssaux.scss: use math.div() instead of '/' for division DOC: style/f*.scss: use math.div() instead of '/' for division MISC: package.json.in: update npm packages Signed-off-by: Tim Janik 2021-05-27 Tim Janik # e2eb6671845 UI: .eslintrc.js: whitespace fixups Signed-off-by: Tim Janik 2021-05-27 Tim Janik # 3431a43d88a UI: b/*.vue: use math.div() instead of '/' for division Signed-off-by: Tim Janik 2021-05-27 Tim Janik # a5bcc9d48d0 UI: cssaux.scss: add divfactor() helper for 1/asfactor() Signed-off-by: Tim Janik 2021-05-27 Tim Janik # e4725dece77 UI: theme.scss: use math.div() instead of '/' for division Signed-off-by: Tim Janik 2021-05-27 Tim Janik # 1392f17d06f UI: cssaux.scss: use math.div() instead of '/' for division Signed-off-by: Tim Janik 2021-05-27 Tim Janik # 0103200013e DOC: style/f*.scss: use math.div() instead of '/' for division Signed-off-by: Tim Janik 2021-05-27 Tim Janik # 498d3fd7689 MISC: package.json.in: update npm packages Signed-off-by: Tim Janik 2021-05-27 Tim Janik # 31ca2183bb7 Merge branch 'keyword-icons' * keyword-icons: UI: b/preferencesdialog.vue: adjust icon matching UI: b/icon.vue: use one function to read out this.ic ASE: regex: move Regex API into Re.* and support case insensitive matching ASE: server.cc: leave midi/pcm hint for driver entry icons ASE: utils.cc: ensure comma in icon keyword list DEVICES: blepsynth/blepsynth.cc: adjust to explicit typing for IconString ASE: api.hh: use explicit typing for IconString in Choice constructor ASE: utils: add MakeIcon constructors for iconString ASE: defs.hh: define IconString as String derived ASE: unicode.cc: reserve vector space during string conversion ASE: strings: add string_is_ascii_alnum() Signed-off-by: Tim Janik 2021-05-27 Tim Janik # 338c96abddb UI: b/preferencesdialog.vue: adjust icon matching Signed-off-by: Tim Janik 2021-05-27 Tim Janik # b54c241bfc3 UI: b/icon.vue: use one function to read out this.ic Signed-off-by: Tim Janik 2021-05-26 Tim Janik # fc7b9d24501 ASE: regex: move Regex API into Re.* and support case insensitive matching Signed-off-by: Tim Janik 2021-05-26 Tim Janik # 0e7a06e6643 ASE: server.cc: leave midi/pcm hint for driver entry icons Signed-off-by: Tim Janik 2021-05-26 Tim Janik # 4905957b0cc ASE: utils.cc: ensure comma in icon keyword list Signed-off-by: Tim Janik 2021-05-24 Tim Janik # 8431d7b472b DEVICES: blepsynth/blepsynth.cc: adjust to explicit typing for IconString Signed-off-by: Tim Janik 2021-05-24 Tim Janik # 6d5a577db90 ASE: api.hh: use explicit typing for IconString in Choice constructor Signed-off-by: Tim Janik 2021-05-24 Tim Janik # 5fc7844ad86 ASE: utils: add MakeIcon constructors for iconString Signed-off-by: Tim Janik 2021-05-24 Tim Janik # 00710a1dca0 ASE: defs.hh: define IconString as String derived Signed-off-by: Tim Janik 2021-05-24 Tim Janik # 11c6c7a12f1 ASE: unicode.cc: reserve vector space during string conversion Signed-off-by: Tim Janik 2021-05-24 Tim Janik # b72713d777a ASE: strings: add string_is_ascii_alnum() Signed-off-by: Tim Janik 2021-05-27 Tim Janik # 08216329e53 Merge branch 'ui-tips' * ui-tips: JSONIPC: jsonipc.js: add missing globalThis prefix UI: b/pro-input.vue: provide :prop for b-choice UI: b/choice.vue: display value in data_tip() (not bubble) UI: b/knob.vue: update bubble_tip via attribute UI: b/databubble.vue: update bubble on zmoves UI: b/preferencesdialog.vue: minor rename UI: b/knob.vue: always show value in data bubble, improve tip UI: b/pro-input.vue: provide knob with this.prop UI: b/databubble.vue: add unforce() Signed-off-by: Tim Janik 2021-05-26 Tim Janik # f07c012a174 JSONIPC: jsonipc.js: add missing globalThis prefix Signed-off-by: Tim Janik 2021-05-25 Tim Janik # e151784de59 UI: b/pro-input.vue: provide :prop for b-choice Signed-off-by: Tim Janik 2021-05-25 Tim Janik # 1bf43fc6d09 UI: b/choice.vue: display value in data_tip() (not bubble) Signed-off-by: Tim Janik 2021-05-25 Tim Janik # c302c734cc3 UI: b/knob.vue: update bubble_tip via attribute Signed-off-by: Tim Janik 2021-05-25 Tim Janik # b46c8cf20f9 UI: b/databubble.vue: update bubble on zmoves Signed-off-by: Tim Janik 2021-05-24 Tim Janik # bb24cb5ed2d UI: b/preferencesdialog.vue: minor rename Signed-off-by: Tim Janik 2021-05-23 Tim Janik # d48178847f9 UI: b/knob.vue: always show value in data bubble, improve tip Signed-off-by: Tim Janik 2021-05-23 Tim Janik # e5b9a80451c UI: b/pro-input.vue: provide knob with this.prop Signed-off-by: Tim Janik 2021-05-23 Tim Janik # 0bce463bdf9 UI: b/databubble.vue: add unforce() Signed-off-by: Tim Janik 2021-05-20 Tim Janik # e78de2246ea Merge branch 'auto-zstd' * auto-zstd: ASE: project.cc: use AUTO_ZSTD for storage ASE: storage: AUTO_ZSTD: transparently compress to/from zstd Signed-off-by: Tim Janik 2021-05-16 Tim Janik # f8f01a18b55 ASE: project.cc: use AUTO_ZSTD for storage Signed-off-by: Tim Janik 2021-05-16 Tim Janik # ecfa8812424 ASE: storage: AUTO_ZSTD: transparently compress to/from zstd Signed-off-by: Tim Janik 2021-05-20 Tim Janik # e4c697d2b40 Merge branch 'zip-project' * zip-project: ASE: project.cc: allow project file search in dirname or dirname/.. ASE: project.cc: store projects in ZIP container ASE: storage: separate Reader/Writer APIs and avoid temporary files ASE: minizip.h: use minizip MZ_VERSION_MADEBY which includes OS type ASE: api.hh: add operator! (Error) ASE: defs.hh: add Error forward decl ASE: compress: use zstd_{un}compress() and add interesting magic checks ASE: project.cc: support saving into existing .anklang.project dir Signed-off-by: Tim Janik 2021-05-16 Tim Janik # 36f8e78699f ASE: project.cc: allow project file search in dirname or dirname/.. Signed-off-by: Tim Janik 2021-05-16 Tim Janik # c26b309e54d ASE: project.cc: store projects in ZIP container Signed-off-by: Tim Janik 2021-05-16 Tim Janik # 4bf643d9834 ASE: storage: separate Reader/Writer APIs and avoid temporary files Signed-off-by: Tim Janik 2021-05-16 Tim Janik # 605e6afaa6c ASE: minizip.h: use minizip MZ_VERSION_MADEBY which includes OS type Signed-off-by: Tim Janik 2021-05-16 Tim Janik # 536292ca435 ASE: api.hh: add operator! (Error) Signed-off-by: Tim Janik 2021-05-16 Tim Janik # 24c567e1f0e ASE: defs.hh: add Error forward decl Signed-off-by: Tim Janik 2021-05-16 Tim Janik # c023e9c59dc ASE: compress: use zstd_{un}compress() and add interesting magic checks Signed-off-by: Tim Janik 2021-05-16 Tim Janik # 746fc62eaf4 ASE: project.cc: support saving into existing .anklang.project dir Signed-off-by: Tim Janik 2021-05-20 Tim Janik # fd807992be9 Merge branch 'support-zstd' * support-zstd: ASE: project.cc: fix comments ASE: project.cc: pass on errors during compression ASE: project.cc: compress project data ASE: Makefile.mk: link against -lzstd ASE: compress: compress data with zstd ASE: path: add strip_slashes() ASE: project.cc: save/load files more robustly, rename .anklang.project Signed-off-by: Tim Janik 2021-05-16 Tim Janik # 99a73e75f1a ASE: project.cc: fix comments Signed-off-by: Tim Janik 2021-05-14 Tim Janik # 6ca6da8fb20 ASE: project.cc: pass on errors during compression Signed-off-by: Tim Janik 2021-05-14 Tim Janik # ec07a4285c7 ASE: project.cc: compress project data Signed-off-by: Tim Janik 2021-05-14 Tim Janik # 41d04c81b41 ASE: Makefile.mk: link against -lzstd Signed-off-by: Tim Janik 2021-05-14 Tim Janik # a7a291fc2cf ASE: compress: compress data with zstd Signed-off-by: Tim Janik 2021-05-14 Tim Janik # 2ca6faa454c ASE: path: add strip_slashes() Signed-off-by: Tim Janik 2021-05-14 Tim Janik # 1a2b7860758 ASE: project.cc: save/load files more robustly, rename .anklang.project Signed-off-by: Tim Janik 2021-05-20 Tim Janik # ecc6f476306 Merge branch 'simplify-sysconfig' * simplify-sysconfig: ASE: Makefile.mk: generate ase/sysconfig.h with one simple test program ASE: Makefile.mk: ase/sysconfig.h: remove unused macros ASE: platform.cc: use ase_*_version ASE: driver.cc: use ase_*_version ASE: ase/buildversion.cc: provide ase_*_version variables ASE: platform.hh: declare ase_*_version variables MISC: config-checks.mk: depend on vorbisfile >= 1.3.5 to avoid seek bug ASE: Makefile.mk: remove unused sysconfig1.h Signed-off-by: Tim Janik 2021-05-16 Tim Janik # 1b3385845b5 ASE: Makefile.mk: generate ase/sysconfig.h with one simple test program Signed-off-by: Tim Janik 2021-05-16 Tim Janik # eba96335284 ASE: Makefile.mk: ase/sysconfig.h: remove unused macros Signed-off-by: Tim Janik 2021-05-16 Tim Janik # a5397ba1a91 ASE: platform.cc: use ase_*_version Signed-off-by: Tim Janik 2021-05-16 Tim Janik # 7c7d81e7202 ASE: driver.cc: use ase_*_version Signed-off-by: Tim Janik 2021-05-16 Tim Janik # a01356eead4 ASE: ase/buildversion.cc: provide ase_*_version variables Signed-off-by: Tim Janik 2021-05-16 Tim Janik # 1108236b038 ASE: platform.hh: declare ase_*_version variables Signed-off-by: Tim Janik 2021-05-16 Tim Janik # ceec8ad1f7e MISC: config-checks.mk: depend on vorbisfile >= 1.3.5 to avoid seek bug Signed-off-by: Tim Janik 2021-05-11 Tim Janik # cf1196627ad ASE: Makefile.mk: remove unused sysconfig1.h Signed-off-by: Tim Janik 2021-05-20 Tim Janik # f2d55320ca6 Merge branch 'synth-favicon' * synth-favicon: README.md: for IRC, link to #Anklang on https://libera.chat/ UI: assets/favicon.svg: update favicon to icon with piano + synth knobs UI: theme.scss: disable border flicker for active buttons Signed-off-by: Tim Janik 2021-05-20 Tim Janik # 074e7b9b53a README.md: for IRC, link to #Anklang on https://libera.chat/ Signed-off-by: Tim Janik 2021-05-12 Tim Janik # dbdcad2004f UI: assets/favicon.svg: update favicon to icon with piano + synth knobs Signed-off-by: Tim Janik 2021-05-13 Tim Janik # f6501be968b UI: theme.scss: disable border flicker for active buttons Signed-off-by: Tim Janik 2021-05-17 Tim Janik # b6df97ad4cf Merge branch 'load-project' * load-project: UI: b/app.js: load only non-empty filenames ASE: project: properly assign initial project name ASE: path.cc: return ENOENT for empty file names ASE: processor.cc: use identifiers as choice values ASE: project.cc: store mastertrack as first track field ASE: device.cc: store URI as first subdevice field ASE: serialize: WritNode: add front() to create record fields at the front ASE: value: ValueR.valuep(): allow new record fields at the front ASE: gadget.cc: save and load storage properties DEVICES: blepsynth/blepsynth.cc: make note toggles GUIONLY ASE: processor: add STORAGEONLY and GUIONLY ASE: device: serialize subdevices UI: b/app.js: call load_project() UI: startup.js: create Project early on ASE: api.hh: implement load_project() JSONIPC: testjsonipc.cc: compile std::pair<> arguments and results JSONIPC: jsonipc.hh: support std::pair<> arguments and results ASE: track: serialize device chain ASE: project: serialize tracks ASE: gadget: derive Serializable and serialize name() ASE: serialize.hh: ignore loading of constant numeric types ASE: serialize.cc: provide Serializable::serialize() for chaining ASE: defs.hh: move brief Serializable definition here Signed-off-by: Tim Janik 2021-05-11 Tim Janik # 36c570d2efd UI: b/app.js: load only non-empty filenames Signed-off-by: Tim Janik 2021-05-11 Tim Janik # 3ff363782f2 ASE: project: properly assign initial project name Signed-off-by: Tim Janik 2021-05-10 Tim Janik # 3ca59b016c5 ASE: path.cc: return ENOENT for empty file names Signed-off-by: Tim Janik 2021-05-09 Tim Janik # 3a2ce1db89d ASE: processor.cc: use identifiers as choice values Signed-off-by: Tim Janik 2021-05-09 Tim Janik # 2a77e240b9d ASE: project.cc: store mastertrack as first track field Signed-off-by: Tim Janik 2021-05-09 Tim Janik # 3cf5467db46 ASE: device.cc: store URI as first subdevice field Signed-off-by: Tim Janik 2021-05-09 Tim Janik # 62007dfcd01 ASE: serialize: WritNode: add front() to create record fields at the front Signed-off-by: Tim Janik 2021-05-09 Tim Janik # 5c4fb7ded12 ASE: value: ValueR.valuep(): allow new record fields at the front Signed-off-by: Tim Janik 2021-05-13 Tim Janik # ea964d57a65 ASE: gadget.cc: save and load storage properties Signed-off-by: Tim Janik 2021-05-08 Tim Janik # 86c3c7babc6 DEVICES: blepsynth/blepsynth.cc: make note toggles GUIONLY Signed-off-by: Tim Janik 2021-05-08 Tim Janik # 1f80239ff61 ASE: processor: add STORAGEONLY and GUIONLY Signed-off-by: Tim Janik 2021-05-08 Tim Janik # 1931d66169b ASE: device: serialize subdevices Signed-off-by: Tim Janik 2021-05-13 Tim Janik # caa61ba7002 UI: b/app.js: call load_project() Signed-off-by: Tim Janik 2021-05-08 Tim Janik # c980e558e7a UI: startup.js: create Project early on Signed-off-by: Tim Janik 2021-05-08 Tim Janik # f9d979ec6c5 ASE: api.hh: implement load_project() Signed-off-by: Tim Janik 2021-05-06 Tim Janik # 50cca0a16d3 JSONIPC: testjsonipc.cc: compile std::pair<> arguments and results Signed-off-by: Tim Janik 2021-05-06 Tim Janik # fac834d7286 JSONIPC: jsonipc.hh: support std::pair<> arguments and results Signed-off-by: Tim Janik 2021-05-06 Tim Janik # e7e9564a9f8 ASE: track: serialize device chain Signed-off-by: Tim Janik 2021-05-06 Tim Janik # e71c8412205 ASE: project: serialize tracks Signed-off-by: Tim Janik 2021-05-06 Tim Janik # 7037a1d1751 ASE: gadget: derive Serializable and serialize name() Signed-off-by: Tim Janik 2021-05-06 Tim Janik # 412f7fb312c ASE: serialize.hh: ignore loading of constant numeric types Signed-off-by: Tim Janik 2021-05-06 Tim Janik # 5477a1a72cd ASE: serialize.cc: provide Serializable::serialize() for chaining Signed-off-by: Tim Janik 2021-05-06 Tim Janik # e523c746ef9 ASE: defs.hh: move brief Serializable definition here Signed-off-by: Tim Janik 2021-05-13 Tim Janik # 025936128f3 Merge branch 'xdg-dirs' * xdg-dirs: ASE: avoid virtual inheritance for Impl types UI: Makefile.mk: fix scss deps and delete unused css-imports.js UI: .eslintrc.js: allow constant-condition ASE: api.hh: merge errno constants into Ase::Error and offset special values ASE: path.cc: properly assign ENOTDIR if mkdirs() fails ASE: main.cc: enable fatal warnings for --check-integrity-tests ASE: api.hh: add Project.save_dir() skeleton ASE: api.hh: add Error::NOT_DIRECTORY ASE: path: move dir_terminate() here ASE: path: add normalize(), fix mkdirs() errno UI: b/shell.vue: popdown filedialog as early as possible after selection UI: b/menubar.vue: start in ~/Music, don't force '.anklang' UI: b/track-list.vue, b/trackview.vue: fix lint UI: b/filedialog.vue: use crawler for canonify(), allow non-existing paths ASE: path: use std::filesystem and posix filesystem functions Avoid GLib functions when we can use std::filesystem. ASE: api.hh: ResourceCrawler: provide just assign() and versatile canonify() ASE: randomhash.hh: support std::string hashing ASE: path.cc: expand_tilde(): preserve non-expandable paths UI: b/filedialog.vue: work around re-layouts, crbug#1116001 ASE: api.hh: rename dir_crawler() and expand special locations ASE: platform: remove unused HOMEDIR ASE: crawler.cc: get_dir(): also resolve xdg_dir() paths ASE: path: add xdg_dir() to resolve dirs from $XDG_* and user-dirs.dirs ASE: inifile: add .ini file parser ELECTRON: Makefile.mk: change Electron app name to "anklang/electron" The name change is not directly user visible, because index.html sets a tag. It does change the Electron data/cache directory to ~/.config/anklang/electron/, so electron data now resides under the ~/.config/anklang/ directory which is used anyway. And it changes the X11 WM_CLASS string to "anklang/electron". Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-06 Tim Janik # 8d8dc2e0b6c ASE: avoid virtual inheritance for Impl types Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-06 Tim Janik # f6707009f42 UI: Makefile.mk: fix scss deps and delete unused css-imports.js Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-06 Tim Janik # db9ebb865e4 UI: .eslintrc.js: allow constant-condition Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-05 Tim Janik # afc38238145 ASE: api.hh: merge errno constants into Ase::Error and offset special values Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-05 Tim Janik # d45932915c1 ASE: path.cc: properly assign ENOTDIR if mkdirs() fails Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-05 Tim Janik # e758f6453a6 ASE: main.cc: enable fatal warnings for --check-integrity-tests Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-05 Tim Janik # d9c3e669d03 ASE: api.hh: add Project.save_dir() skeleton Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-05 Tim Janik # 88157f27cac ASE: api.hh: add Error::NOT_DIRECTORY Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-05 Tim Janik # 710b8e5ad35 ASE: path: move dir_terminate() here Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-04 Tim Janik # 19805e90477 ASE: path: add normalize(), fix mkdirs() errno Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-04 Tim Janik # c15e717b23d UI: b/shell.vue: popdown filedialog as early as possible after selection Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-04 Tim Janik # 60ae7b97549 UI: b/menubar.vue: start in ~/Music, don't force '.anklang' Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-04 Tim Janik # b2f923dfca4 UI: b/track-list.vue, b/trackview.vue: fix lint Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-04 Tim Janik # feb3cde4275 UI: b/filedialog.vue: use crawler for canonify(), allow non-existing paths Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-04 Tim Janik # f7dd70e5053 ASE: path: use std::filesystem and posix filesystem functions Avoid GLib functions when we can use std::filesystem. Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-04 Tim Janik # 4a06850fd63 ASE: api.hh: ResourceCrawler: provide just assign() and versatile canonify() Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-04 Tim Janik # 0889c997083 ASE: randomhash.hh: support std::string hashing Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-04 Tim Janik # c6a1fc77225 ASE: path.cc: expand_tilde(): preserve non-expandable paths Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-03 Tim Janik # 84ef3fa5044 UI: b/filedialog.vue: work around <input/> re-layouts, crbug#1116001 Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-02 Tim Janik # 4d7beda16fb ASE: api.hh: rename dir_crawler() and expand special locations Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-02 Tim Janik # 45454ab3cb1 ASE: platform: remove unused HOMEDIR Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-02 Tim Janik # bd3838ed7f7 ASE: crawler.cc: get_dir(): also resolve xdg_dir() paths Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-02 Tim Janik # c35e4fe7feb ASE: path: add xdg_dir() to resolve dirs from $XDG_* and user-dirs.dirs Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-02 Tim Janik # 97205db2475 ASE: inifile: add .ini file parser Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-02 Tim Janik # 8283a523397 ELECTRON: Makefile.mk: change Electron app name to "anklang/electron" The name change is not directly user visible, because index.html sets a <title/> tag. It does change the Electron data/cache directory to ~/.config/anklang/electron/, so electron data now resides under the ~/.config/anklang/ directory which is used anyway. And it changes the X11 WM_CLASS string to "anklang/electron". Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-01 Tim Janik # 94665ebd3ca Merge branch 'file-dialog' * file-dialog: UI: b/ch-vue.md: document Envue components UI: b/menubar.vue: enable Open, Save, Save-As UI: b/app.js: add load_project_checked() UI: b/shell.vue: implement Shell.select_file() UI: b/filedialog.vue: component to select a file name UI: b/folderview.vue: component to browse an Ase.Entry list UI: b/modaldialog.vue: emit 'close' event UI: theme.scss: move focus outline styling here UI: sfc-compile.js: fix quoting in HTML section UI: styles.scss: style scrollbars inside .b-modaldialog-shield UI: theme.scss: add helper classes for grid col/row UI: util.js: use Vue.watchEffect() to monitor reactive data in Vue3 UI: util.js: ignore hotkeys during compose sequences UI: util.js: support LEFT/RIGHT focus cycling UI: b/envue.js: support $watch() and observable_from_getters() UI: startup.js: Chrome-90 still has the movementX devicePixelRatio bug UI: b/preferencesdialog.vue: remove unused code UI: b/piano-roll.vue: minor fixes UI: b/partlist.vue: minor fix UI: b/modaldialog.vue: use v-flex for layout UI: b/fed-object.vue: remove unused code UI: util.js: export zero_pad and fmt_date UI: util.js: allow data-subfocus=1 to constrain focus arrow movements UI: util.js: allow dom_update() for Text nodes MISC: package.json.in: update npm packages ASE: api.hh: add crawler path navigation ASE: crawler, api.hh: add ResourceCrawler for files Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-01 Tim Janik # 5acb3f13fc4 UI: b/ch-vue.md: document Envue components Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-01 Tim Janik # 5a3875be78f UI: b/menubar.vue: enable Open, Save, Save-As Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-01 Tim Janik # 351bb4413b9 UI: b/app.js: add load_project_checked() Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-01 Tim Janik # 93f364f3ff7 UI: b/shell.vue: implement Shell.select_file() Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-01 Tim Janik # 8229711e3a5 UI: b/filedialog.vue: component to select a file name Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-01 Tim Janik # a2f70464ac7 UI: b/folderview.vue: component to browse an Ase.Entry list Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-01 Tim Janik # 96f86e661e3 UI: b/modaldialog.vue: emit 'close' event Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-01 Tim Janik # 3dae0464e10 UI: theme.scss: move focus outline styling here Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-29 Tim Janik # 599f2291472 UI: sfc-compile.js: fix quoting in HTML section Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-29 Tim Janik # 0368b13a4ca UI: styles.scss: style scrollbars inside .b-modaldialog-shield Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-29 Tim Janik # e660efeae73 UI: theme.scss: add helper classes for grid col/row Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-29 Tim Janik # baba7adf732 UI: util.js: use Vue.watchEffect() to monitor reactive data in Vue3 Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-29 Tim Janik # e00ff6727ad UI: util.js: ignore hotkeys during compose sequences Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-29 Tim Janik # 43d1e45dd1d UI: util.js: support LEFT/RIGHT focus cycling Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-29 Tim Janik # af9d44961a0 UI: b/envue.js: support $watch() and observable_from_getters() Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-24 Tim Janik # c737eb5ed5e UI: startup.js: Chrome-90 still has the movementX devicePixelRatio bug Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-24 Tim Janik # 8d75157c058 UI: b/preferencesdialog.vue: remove unused code Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-24 Tim Janik # a2133f66be7 UI: b/piano-roll.vue: minor fixes Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-24 Tim Janik # fade1d853fd UI: b/partlist.vue: minor fix Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-24 Tim Janik # b5637ff0e04 UI: b/modaldialog.vue: use v-flex for layout Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-24 Tim Janik # 4eb87b0b7e1 UI: b/fed-object.vue: remove unused code Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-24 Tim Janik # 7351874d0f7 UI: util.js: export zero_pad and fmt_date Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-24 Tim Janik # 56aadb3fe0c UI: util.js: allow data-subfocus=1 to constrain focus arrow movements Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-24 Tim Janik # 7bf41a36b43 UI: util.js: allow dom_update() for Text nodes Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-01 Tim Janik # 808b2045c32 MISC: package.json.in: update npm packages Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-29 Tim Janik # 3e7f0df2170 ASE: api.hh: add crawler path navigation Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-16 Tim Janik # 60a97df3708 ASE: crawler, api.hh: add ResourceCrawler for files Signed-off-by: Tim Janik <timj@gnu.org> 2021-05-01 Tim Janik # 931b2fb4f09 Merge branch 'storage' * storage: ASE: server.cc: ignore read-only MIDI drivers (like Anklangs MIDI inputs) ASE: platform: add DEMODIR and HOMEDIR ASE: storage: add Storage to manage resource files in Ase ZIP containers ASE: minizip: compile minizip into Ase ASE: Makefile.mk: allow *.c files in Ase MISC: config-external.mk: provide minizip-ng-2.9.0 ASE: utils: add uint{16|32|64}_swap_le_be() Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-29 Tim Janik # 0c55d291736 ASE: server.cc: ignore read-only MIDI drivers (like Anklangs MIDI inputs) Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-29 Tim Janik # 7adcd8f72a9 ASE: platform: add DEMODIR and HOMEDIR Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-15 Tim Janik # c39e31dd930 ASE: storage: add Storage to manage resource files in Ase ZIP containers Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-15 Tim Janik # 4fad520922f ASE: minizip: compile minizip into Ase Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-15 Tim Janik # 6c231a87b98 ASE: Makefile.mk: allow *.c files in Ase Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-15 Tim Janik # 008c25ffb93 MISC: config-external.mk: provide minizip-ng-2.9.0 Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-14 Tim Janik # 00cae8ff037 ASE: utils: add uint{16|32|64}_swap_le_be() Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-14 Tim Janik # 0c3d4224c1b Merge branch 'midi-input' * midi-input: UI: b/preferencesdialog.vue: adjust PCM and MIDI icons ASE: engine.cc: synchronize open MIDI drivers with preferences ASE: api.hh: provide up to 4 MIDI driver configs ASE: midievent.hh: add capacity() and reserve() ASE: driver: ensure devid() matches open (devid) UI: b/fed-object.vue: query and display ChoiceS UI: b/choice.vue: display Ase.Choice entries UI: b/icon.vue: fallback to `ic` unicode display ASE: driver.cc: fix info ASE: api.hh: remove unused DriverEntry.modem DEVICES: blepsynth/blepsynth.cc: adjust ChoiceS construction ASE: processor: use Choice, ChoiceS and string_to_identifier() ASE: server: provide ChoiceS for midi_driver and pcm_driver ASE: api.hh: extend Choice and ChoiceS ASE: strings: add string_to_identifier() ASE: properties: allow Text properties with choice lists ASE: processor: use CString as icon string type UI: b/pro-input.vue: center input fields, widen b-choice UI: b/pro-group.vue: allow taller inputs UI: b/preferencesdialog.vue: augment :choice: properties UI: b/fed-object.vue: use b-choice for :choice: properties UI: b/choice.vue: support small, indexed and drop-down arrow UI: b/toggle.vue: fix comment UI: b/choice.vue: cleanups UI: b/fed-object.vue: allow property augmentation UI: b/fed-object.vue: use object_await_values() UI: util.js: add object_await_values and object_zip ASE: server.cc: list PCM and MIDI drivers UI: startup.js: Chrome-89 still has the movementX devicePixelRatio bug ASE: track.cc: setup event source per track ASE: midievent.cc: fix comment ASE: driver-alsa.cc: reduce debug verbosity ASE: device: fix device lists and add event source setter ASE: engine: add EngineMidiInput to provide external MIDI events ASE: processor.cc: take event buses into account when checking outputs ASE: cxxaux.cc: suport assertion backtraces with ASE_DEBUG=backtrace ASE: backtrace: determine system() command for backtrace printing DEVICES: blepsynth/blepsynth.cc: fix uri and version, add creator Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-14 Tim Janik # b92a9378c53 UI: b/preferencesdialog.vue: adjust PCM and MIDI icons Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-12 Tim Janik # 46d21d4b3c6 ASE: engine.cc: synchronize open MIDI drivers with preferences Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-12 Tim Janik # 93897a6f39e ASE: api.hh: provide up to 4 MIDI driver configs Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-12 Tim Janik # 017b901d171 ASE: midievent.hh: add capacity() and reserve() Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-12 Tim Janik # 71a2720161d ASE: driver: ensure devid() matches open (devid) Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-11 Tim Janik # 4b298f4f0e2 UI: b/fed-object.vue: query and display ChoiceS Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-11 Tim Janik # 7e1bb6ac130 UI: b/choice.vue: display Ase.Choice entries Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-11 Tim Janik # 55232b0bb7c UI: b/icon.vue: fallback to `ic` unicode display Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-11 Tim Janik # 37a9a4acb83 ASE: driver.cc: fix info Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-11 Tim Janik # 1136e04691b ASE: api.hh: remove unused DriverEntry.modem Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-11 Tim Janik # 84baefa8d17 DEVICES: blepsynth/blepsynth.cc: adjust ChoiceS construction Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-11 Tim Janik # 7456859b42f ASE: processor: use Choice, ChoiceS and string_to_identifier() Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-11 Tim Janik # 07262f1608b ASE: server: provide ChoiceS for midi_driver and pcm_driver Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-11 Tim Janik # bebcd191f1c ASE: api.hh: extend Choice and ChoiceS Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-11 Tim Janik # b75a601b15e ASE: strings: add string_to_identifier() Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-11 Tim Janik # 9e935c6b124 ASE: properties: allow Text properties with choice lists Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-11 Tim Janik # fb79be0715e ASE: processor: use CString as icon string type Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-09 Tim Janik # 635328db627 UI: b/pro-input.vue: center input fields, widen b-choice Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-09 Tim Janik # 26523276fc7 UI: b/pro-group.vue: allow taller inputs Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-09 Tim Janik # 2546ce12f80 UI: b/preferencesdialog.vue: augment :choice: properties Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-09 Tim Janik # 472eac4bf70 UI: b/fed-object.vue: use b-choice for :choice: properties Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-09 Tim Janik # fc5b007bd4e UI: b/choice.vue: support small, indexed and drop-down arrow Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-09 Tim Janik # dfa1b7f13fe UI: b/toggle.vue: fix comment Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-09 Tim Janik # 8f9c4e244af UI: b/choice.vue: cleanups Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-08 Tim Janik # 11f6d85a6ae UI: b/fed-object.vue: allow property augmentation Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-08 Tim Janik # 5d60b010dbd UI: b/fed-object.vue: use object_await_values() Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-08 Tim Janik # 7a3f4c0b0dd UI: util.js: add object_await_values and object_zip Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-08 Tim Janik # 6f54b3da0e4 ASE: server.cc: list PCM and MIDI drivers Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-08 Tim Janik # b26d2e9fda6 UI: startup.js: Chrome-89 still has the movementX devicePixelRatio bug Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-08 Tim Janik # 516ea062eb9 ASE: track.cc: setup event source per track Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-08 Tim Janik # 7953c909a41 ASE: midievent.cc: fix comment Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-08 Tim Janik # cb412d50739 ASE: driver-alsa.cc: reduce debug verbosity Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-08 Tim Janik # 57378b44a98 ASE: device: fix device lists and add event source setter Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-08 Tim Janik # 5b9d98966f4 ASE: engine: add EngineMidiInput to provide external MIDI events Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-08 Tim Janik # 70a8dfdf179 ASE: processor.cc: take event buses into account when checking outputs Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-08 Tim Janik # c0fa0d3a05b ASE: cxxaux.cc: suport assertion backtraces with ASE_DEBUG=backtrace Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-08 Tim Janik # 48066918798 ASE: backtrace: determine system() command for backtrace printing Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-07 Tim Janik # 916b1149661 DEVICES: blepsynth/blepsynth.cc: fix uri and version, add creator Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-05 Tim Janik # 6854b48fe51 Merge branch 'blepsynth' * blepsynth: DEVICES: blepsynth/: adjust for Ase API DEVICES: blepsynth/Makefile.mk: integrate BlepSynth into Ase build DEVICES: blepsynth/: relicense to MPL-2.0 Code originally by: Stefan Westerfeld <stefan@space.twc.de> License statement to use the code under MPL-2: https://mail.gnome.org/archives/beast/2021-February/msg00001.html DEVICES: blepsynth: rename namespace to Ase, adjust prefixes and includes DEVICES: blepsynth/blepsynth.cc: fix "stereo_out" identifier DEVICES: blepsynth/blepsynth.cc: make query_info() const, i.e. MT-Safe DEVICES: blepsynth: rename midievent.key to match MIDI spec DEVICES: blepsynth/blepsynth.cc: fix missing 'override' DEVICES: blepsynth: add filter key tracking DEVICES: blepsynth: stop filter envelope at note off DEVICES: blepsynth: smooth "Env Cutoff Modulation" to avoid clicks DEVICES: blepsynth: add filter envlope and cutoff modulation DEVICES: blepsynth: add linear ADSR shape for Envelope DEVICES: blepsynth: support osc octave + pitch properties DEVICES: blepsynth: display unison voice text as integer DEVICES: blepsynth: add smoothing for cutoff frequency, add drive property DEVICES: blepsynth: copy remaining relevant files from bleposc branch DEVICES: blepsynth/blepsynth.cc: use Logscale for cutoff parameters DEVICES: blepsynth: fix choice range to go from 0 .. size() -1 DEVICES: blepsynth: use nyquist() and inyquist() DEVICES: blepsynth/blepsynth.cc: allow 8s Envelope ramps and use log scales DEVICES: blepsynth/blepsynth.cc: implement reset() via unsetting voices DEVICES: blepsynth/blepsynth.cc: remove unused adjust_param() DEVICES: blepsynth/blepsynth.cc: fix add_param() parameters DEVICES: blepsynth/blepsynth.cc: remove useless copy-paste lines DEVICES: blepsynth/GNUmakefile: support `make` command in this dir DEVICES: blepsynth/bleposc.hh: cleanup includes DEVICES: blepsynth: blepsynth.cc: handle ALL_NOTES_OFF event message DEVICES: blepsynth: blepsynth.cc: re-arrange param groups to improve UI DEVICES: blepsynth: blepsynth.cc: process NOTE_ON and NOTE_OFF DEVICES: blepsynth: blepsynth.cc: remove unused RenderSetup argument DEVICES: blepsynth: fixups due to moving sources into devices/blepsynth DEVICES: blepsynth: blepsynth.cc: support different midi channels DEVICES: blepsynth: blepsynth.cc: add lowpass filter DEVICES: blepsynth: blepsynth.cc: add more oscillator properties DEVICES: blepsynth: blepsynth.cc: add osc unison properties DEVICES: blepsynth: blepsynth.cc: add "real" blep oscillators DEVICES: blepsynth: blepsynth.cc: add ADSR volume envelope DEVICES: blepsynth: blepsynth.cc: started to implement BlepSynth processor Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-02 Tim Janik # e288b6cfd1a DEVICES: blepsynth/: adjust for Ase API Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-02 Tim Janik # cf71c468a5b DEVICES: blepsynth/Makefile.mk: integrate BlepSynth into Ase build Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-03 Tim Janik # e1159a8f5af DEVICES: blepsynth/: relicense to MPL-2.0 Code originally by: Stefan Westerfeld <stefan@space.twc.de> License statement to use the code under MPL-2: https://mail.gnome.org/archives/beast/2021-February/msg00001.html Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-31 Tim Janik # 4909b41f262 DEVICES: blepsynth: rename namespace to Ase, adjust prefixes and includes Signed-off-by: Tim Janik <timj@gnu.org> 2020-09-29 Tim Janik # 7f9c5703c5e DEVICES: blepsynth/blepsynth.cc: fix "stereo_out" identifier Signed-off-by: Tim Janik <timj@gnu.org> 2020-09-23 Tim Janik # e7a56737ef3 DEVICES: blepsynth/blepsynth.cc: make query_info() const, i.e. MT-Safe Signed-off-by: Tim Janik <timj@gnu.org> 2020-07-31 Tim Janik # 6d10a8dc6aa DEVICES: blepsynth: rename midievent.key to match MIDI spec Signed-off-by: Tim Janik <timj@gnu.org> 2020-07-25 Tim Janik # 69633a60390 DEVICES: blepsynth/blepsynth.cc: fix missing 'override' Signed-off-by: Tim Janik <timj@gnu.org> 2020-07-18 Stefan Westerfeld # ff66dbaa57b DEVICES: blepsynth: add filter key tracking Signed-off-by: Stefan Westerfeld <stefan@space.twc.de> 2020-07-18 Stefan Westerfeld # 5dcdae3d505 DEVICES: blepsynth: stop filter envelope at note off Signed-off-by: Stefan Westerfeld <stefan@space.twc.de> 2020-07-18 Stefan Westerfeld # 190f2d57746 DEVICES: blepsynth: smooth "Env Cutoff Modulation" to avoid clicks Signed-off-by: Stefan Westerfeld <stefan@space.twc.de> 2020-07-18 Stefan Westerfeld # 34093af7bee DEVICES: blepsynth: add filter envlope and cutoff modulation Signed-off-by: Stefan Westerfeld <stefan@space.twc.de> 2020-07-18 Stefan Westerfeld # 43055af4c56 DEVICES: blepsynth: add linear ADSR shape for Envelope Signed-off-by: Stefan Westerfeld <stefan@space.twc.de> 2020-07-18 Stefan Westerfeld # ccddce4bb2d DEVICES: blepsynth: support osc octave + pitch properties Signed-off-by: Stefan Westerfeld <stefan@space.twc.de> 2020-07-18 Stefan Westerfeld # 82e8ea20316 DEVICES: blepsynth: display unison voice text as integer Signed-off-by: Stefan Westerfeld <stefan@space.twc.de> 2020-07-14 Stefan Westerfeld # 7817c5b23ca DEVICES: blepsynth: add smoothing for cutoff frequency, add drive property Signed-off-by: Stefan Westerfeld <stefan@space.twc.de> 2020-07-13 Stefan Westerfeld # 79c0277bdc3 DEVICES: blepsynth: copy remaining relevant files from bleposc branch Signed-off-by: Stefan Westerfeld <stefan@space.twc.de> 2020-07-15 Tim Janik # f4a7ecae2fb DEVICES: blepsynth/blepsynth.cc: use Logscale for cutoff parameters Signed-off-by: Tim Janik <timj@gnu.org> 2020-07-15 Tim Janik # 39d84a7b95b DEVICES: blepsynth: fix choice range to go from 0 .. size() -1 Signed-off-by: Tim Janik <timj@gnu.org> 2020-07-11 Tim Janik # ee5113389c0 DEVICES: blepsynth: use nyquist() and inyquist() Signed-off-by: Tim Janik <timj@gnu.org> 2020-07-11 Tim Janik # f68bf0ff54b DEVICES: blepsynth/blepsynth.cc: allow 8s Envelope ramps and use log scales Signed-off-by: Tim Janik <timj@gnu.org> 2020-07-11 Tim Janik # 634ce15fd27 DEVICES: blepsynth/blepsynth.cc: implement reset() via unsetting voices Signed-off-by: Tim Janik <timj@gnu.org> 2020-07-09 Tim Janik # 3216c30efd0 DEVICES: blepsynth/blepsynth.cc: remove unused adjust_param() Signed-off-by: Tim Janik <timj@gnu.org> 2020-07-09 Tim Janik # 8820f13337a DEVICES: blepsynth/blepsynth.cc: fix add_param() parameters Signed-off-by: Tim Janik <timj@gnu.org> 2020-07-09 Tim Janik # 9c521439ed7 DEVICES: blepsynth/blepsynth.cc: remove useless copy-paste lines Signed-off-by: Tim Janik <timj@gnu.org> 2020-07-08 Tim Janik # f765aa45a8b DEVICES: blepsynth/GNUmakefile: support `make` command in this dir Signed-off-by: Tim Janik <timj@gnu.org> 2020-07-08 Tim Janik # 0fb285f33fc DEVICES: blepsynth/bleposc.hh: cleanup includes Signed-off-by: Tim Janik <timj@gnu.org> 2020-07-07 Tim Janik # f131d81433a DEVICES: blepsynth: blepsynth.cc: handle ALL_NOTES_OFF event message Signed-off-by: Tim Janik <timj@gnu.org> 2020-07-07 Tim Janik # bfd7b5e791f DEVICES: blepsynth: blepsynth.cc: re-arrange param groups to improve UI Signed-off-by: Tim Janik <timj@gnu.org> 2020-07-07 Tim Janik # 037e093b7bd DEVICES: blepsynth: blepsynth.cc: process NOTE_ON and NOTE_OFF Signed-off-by: Tim Janik <timj@gnu.org> 2020-07-07 Tim Janik # d8139adaae2 DEVICES: blepsynth: blepsynth.cc: remove unused RenderSetup argument Signed-off-by: Tim Janik <timj@gnu.org> 2020-07-08 Tim Janik # aa5be1768b9 DEVICES: blepsynth: fixups due to moving sources into devices/blepsynth Signed-off-by: Tim Janik <timj@gnu.org> 2020-07-04 Stefan Westerfeld # 12b9e2ee128 DEVICES: blepsynth: blepsynth.cc: support different midi channels Signed-off-by: Stefan Westerfeld <stefan@space.twc.de> 2020-07-04 Stefan Westerfeld # 4d480393a77 DEVICES: blepsynth: blepsynth.cc: add lowpass filter Signed-off-by: Stefan Westerfeld <stefan@space.twc.de> 2020-07-04 Stefan Westerfeld # 0065212b1ac DEVICES: blepsynth: blepsynth.cc: add more oscillator properties Signed-off-by: Stefan Westerfeld <stefan@space.twc.de> 2020-07-04 Stefan Westerfeld # e79de0406d1 DEVICES: blepsynth: blepsynth.cc: add osc unison properties Signed-off-by: Stefan Westerfeld <stefan@space.twc.de> 2020-07-04 Stefan Westerfeld # 38ce46f96ce DEVICES: blepsynth: blepsynth.cc: add "real" blep oscillators Signed-off-by: Stefan Westerfeld <stefan@space.twc.de> 2020-07-04 Stefan Westerfeld # f60a3d8ac56 DEVICES: blepsynth: blepsynth.cc: add ADSR volume envelope Signed-off-by: Stefan Westerfeld <stefan@space.twc.de> 2020-07-04 Stefan Westerfeld # aa37f6fcb53 DEVICES: blepsynth: blepsynth.cc: started to implement BlepSynth processor Signed-off-by: Stefan Westerfeld <stefan@space.twc.de> 2021-04-05 Tim Janik # 68fd3a04dc4 Merge branch 'math-utilities' * math-utilities: ASE: processor: add note_to_freq() ASE: midievent.hh: add MidiNote and note_to_freq() ASE: mathutils.hh, mathtables.cc: add Cent and Semitone tables ASE: api.hh: provide error_blurb for JS ASE: api.hh: add MusicalTuning, musical_tuning_desc, musical_tuning_blurb ASE: signalmath.hh: add Logscale to logarithmically map a range onto 0…+1 ASE: datautils.hh: include ase/signalmath.hh ASE: signalmath: add conversions for Voltage, Hertz, Decibell ASE: mathutils: add irintf, fast_exp2, fast_log2 ASE: tests/benchmarks.cc: run benchmarks last ASE: testing.cc: sort tests by name Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-02 Tim Janik # b76b10f0ec0 ASE: processor: add note_to_freq() Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-02 Tim Janik # 3c1c15b234d ASE: midievent.hh: add MidiNote and note_to_freq() Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-01 Tim Janik # d4c36a5a052 ASE: mathutils.hh, mathtables.cc: add Cent and Semitone tables Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-01 Tim Janik # bd972ab2fff ASE: api.hh: provide error_blurb for JS Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-01 Tim Janik # 71494330f24 ASE: api.hh: add MusicalTuning, musical_tuning_desc, musical_tuning_blurb Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-01 Tim Janik # e6ccbb157e7 ASE: signalmath.hh: add Logscale to logarithmically map a range onto 0…+1 Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-01 Tim Janik # c164b7f59aa ASE: datautils.hh: include ase/signalmath.hh Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-01 Tim Janik # 173c29cd064 ASE: signalmath: add conversions for Voltage, Hertz, Decibell Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-31 Tim Janik # 1e399e95d61 ASE: mathutils: add irintf, fast_exp2, fast_log2 Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-31 Tim Janik # d8458b4e513 ASE: tests/benchmarks.cc: run benchmarks last Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-31 Tim Janik # 8f1e6bdc8a9 ASE: testing.cc: sort tests by name Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-03 Tim Janik # 1b70d80f730 Merge branch 'resampler2' * resampler2: ASE: resampler2.cc: run resampler2_tests ASE: resampler2: adjust for Ase API ASE: resampler2: rename prefixes and namespace to Ase ASE: resampler2.cc: switch to using FastMemArray<float> ASE: resampler2: relicense to MPL-2.0 Code originally by: Stefan Westerfeld <stefan@space.twc.de> License statement to use the code under MPL-2: https://mail.gnome.org/archives/beast/2021-February/msg00001.html ASE: resampler2: import factor-2 resampler from Stefan Westerfeld Import resampler from: https://github.com/tim-janik/beast/blob/master/bse/bseresampler.hh https://github.com/tim-janik/beast/blob/master/bse/bseresampler.cc Code originally by: Stefan Westerfeld <stefan@space.twc.de> Squashed commits since 2006-09-16: Added Resampler2::find_precision_for_bits to the API, and a precision enum -> string conversion function. The guarantee that the upsampler delay is even was removed from the API. The reason is that we can have a shorter stream delay when the upsampler delay is odd. Removed unnecessary delay. The stream delay for both, upsampling and downsampling should be truely minimal now. Added coefficient set for linear interpolation. It will probably sound bad, but its useful for testing. Improved comments on delay compensation. Added a virtual function Resampler2::delay(), which can be used for compensation of the resampler introduced delay. Added factor 2 resampling code (up- and downsampling), which can use SSE instructions when available. The implementation was tuned for speed. Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-01 Tim Janik # 29eaee7aab4 ASE: resampler2.cc: run resampler2_tests Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-01 Tim Janik # bd23b3bd9b9 ASE: resampler2: adjust for Ase API Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-03 Tim Janik # c07cabb2481 ASE: resampler2: rename prefixes and namespace to Ase Signed-off-by: Tim Janik <timj@gnu.org> 2020-02-12 Tim Janik # 0970a3e6283 ASE: resampler2.cc: switch to using FastMemArray<float> Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-03 Tim Janik # 17db2f8abae ASE: resampler2: relicense to MPL-2.0 Code originally by: Stefan Westerfeld <stefan@space.twc.de> License statement to use the code under MPL-2: https://mail.gnome.org/archives/beast/2021-February/msg00001.html Signed-off-by: Tim Janik <timj@gnu.org> 2006-09-16 Stefan Westerfeld # 0d5a0baad01 ASE: resampler2: import factor-2 resampler from Stefan Westerfeld Import resampler from: https://github.com/tim-janik/beast/blob/master/bse/bseresampler.hh https://github.com/tim-janik/beast/blob/master/bse/bseresampler.cc Code originally by: Stefan Westerfeld <stefan@space.twc.de> Squashed commits since 2006-09-16: Added Resampler2::find_precision_for_bits to the API, and a precision enum -> string conversion function. The guarantee that the upsampler delay is even was removed from the API. The reason is that we can have a shorter stream delay when the upsampler delay is odd. Removed unnecessary delay. The stream delay for both, upsampling and downsampling should be truely minimal now. Added coefficient set for linear interpolation. It will probably sound bad, but its useful for testing. Improved comments on delay compensation. Added a virtual function Resampler2::delay(), which can be used for compensation of the resampler introduced delay. Added factor 2 resampling code (up- and downsampling), which can use SSE instructions when available. The implementation was tuned for speed. Signed-off-by: Stefan Westerfeld <stefan@space.twc.de> Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-03 Tim Janik # 024b52ad09a Merge branch 'engine-schedule' * engine-schedule: ASE: server.cc: implement default error_blurb for g++ ASE: atomics.hh: provide AtomicIntrusiveStack<> UI: b/pro-input.vue: handle Knob reset UI: b/pro-group.vue: minor cleanup UI: b/knob.vue: emit 'reset:value' on dblclick DEVICES: colorednoise.cc: adjust defaults ASE: engine: implement basic AudioProcessor scheduling ASE: engine.hh: rename schedule_queue_update() ASE: engine.hh: count number of AudioProcessors associated with an engine ASE: engine, processor: schedule leafs before combos ASE: processor.hh: minor cleanup ASE: engine: check pcm before writing ASE: main.cc: sort pcm/midi drivers by priority before printing ASE: processor: fix AudioPropertyImpl notification handling ASE: cxxaux.hh: add typeid_name() for object references UI: b/pro-group.vue: fix title alignment UI: b/devicepanel.vue: use list_device_types and Track API UI: b/deviceeditor.vue: adjust to Ase.Device API ASE: processor.cc: fix whitespace ASE: engine.cc: dispatch pending notifications DEVICES: colorednoise.cc: fix initialize() ASE: main.cc: integrate engine into main event loop ASE: track: create chain and add access_device() ASE: device: add disconnect_remove() ASE: combo: adapt scheduling ASE: engine: process jobs and add enable_output() ASE: processor: add enable_engine_output, improve scheduling methods ASE: engine: add remove_output() ASE: api.hh, device: implement Device API ASE: processor: merge configure into initialize() with SpeakerArrangement hints ASE: engine: move SpeakerArrangement here, add job queues and multiple outputs Add const_jobs queue and async_jobs queue. ASE: defs.hh: declare AudioProcessorInfo struct ASE: device: move DeviceImpl here ASE: defs.hh: move AudioCombo, AudioProcessor, DeviceImpl, ParamInfo decls here ASE: combo: implement AudioChain methods ASE: main: expose main_config_.engine ASE: processor: allow bus registration in initialize() instead of configure() ASE: engine.hh: add API comments ASE: defs.hh: add AudioChain, AudioCombo, AudioEngine decls ASE: defs.hh: move ProjectImpl, ServerImpl, TrackImpl decls here ASE: cxxaux.hh: rename StringVector to StringS ASE: defs.hh: move class and struct forward declarations here ASE: combo: add AudioCombo, an AudioProcessor container ASE: processor: provide DeviceImpl.audio_combo() ASE: processor.cc: fix off-by-one in float_buffer ASE: tests/benchmarks.cc: not_0x80_strlen_utf8: minor simplification ASE: processor: rename DeviceImpl.audio_processor() ASE: processor: rename get_device() ASE: processor.hh: add prototype variants for AudioCombo, AudioProcessor, etc DEVICES: colorednoise.cc: use register_audio_processor<>() ASE: processor.hh: rename register_audio_processor<>() Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-03 Tim Janik # c1eb9171000 ASE: server.cc: implement default error_blurb for g++ Signed-off-by: Tim Janik <timj@gnu.org> 2021-04-01 Tim Janik # 4831825cde6 ASE: atomics.hh: provide AtomicIntrusiveStack<> Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-30 Tim Janik # 871e69d0a71 UI: b/pro-input.vue: handle Knob reset Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-30 Tim Janik # e5784eaff2d UI: b/pro-group.vue: minor cleanup Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-30 Tim Janik # 556fc6f9d49 UI: b/knob.vue: emit 'reset:value' on dblclick Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-30 Tim Janik # 5d1b0d98dca DEVICES: colorednoise.cc: adjust defaults Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-30 Tim Janik # 10880823bbd ASE: engine: implement basic AudioProcessor scheduling Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-30 Tim Janik # 9543542f72e ASE: engine.hh: rename schedule_queue_update() Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-30 Tim Janik # 67112c2b904 ASE: engine.hh: count number of AudioProcessors associated with an engine Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-30 Tim Janik # d1c965ccc21 ASE: engine, processor: schedule leafs before combos Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-29 Tim Janik # 368b7fb8874 ASE: processor.hh: minor cleanup Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-29 Tim Janik # ef561b0ce53 ASE: engine: check pcm before writing Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-29 Tim Janik # 5329c37d6a8 ASE: main.cc: sort pcm/midi drivers by priority before printing Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-28 Tim Janik # 4b7a8b453c4 ASE: processor: fix AudioPropertyImpl notification handling Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-28 Tim Janik # c6bafcdc589 ASE: cxxaux.hh: add typeid_name() for object references Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-27 Tim Janik # f3ae340e5c6 UI: b/pro-group.vue: fix title alignment Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-27 Tim Janik # dba4e9c7e90 UI: b/devicepanel.vue: use list_device_types and Track API Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-27 Tim Janik # 14a91f757da UI: b/deviceeditor.vue: adjust to Ase.Device API Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-27 Tim Janik # cac2d09ca71 ASE: processor.cc: fix whitespace Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-27 Tim Janik # 093904a2c76 ASE: engine.cc: dispatch pending notifications Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-25 Tim Janik # ee52f77797c DEVICES: colorednoise.cc: fix initialize() Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-25 Tim Janik # 3351cce812e ASE: main.cc: integrate engine into main event loop Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-25 Tim Janik # ce005b35174 ASE: track: create chain and add access_device() Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-25 Tim Janik # ab33a10f157 ASE: device: add disconnect_remove() Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-25 Tim Janik # d5a988f5afd ASE: combo: adapt scheduling Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-25 Tim Janik # e016f986699 ASE: engine: process jobs and add enable_output() Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-25 Tim Janik # 14d9aff1d82 ASE: processor: add enable_engine_output, improve scheduling methods Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-25 Tim Janik # 217bf9b7193 ASE: engine: add remove_output() Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-24 Tim Janik # 1fcf1e8532e ASE: api.hh, device: implement Device API Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-24 Tim Janik # 34de65d3351 ASE: processor: merge configure into initialize() with SpeakerArrangement hints Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-24 Tim Janik # 44993cdb126 ASE: engine: move SpeakerArrangement here, add job queues and multiple outputs Add const_jobs queue and async_jobs queue. Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-22 Tim Janik # cda82c80674 ASE: defs.hh: declare AudioProcessorInfo struct Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-22 Tim Janik # 8b576eb8728 ASE: device: move DeviceImpl here Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-22 Tim Janik # 491d818d37e ASE: defs.hh: move AudioCombo, AudioProcessor, DeviceImpl, ParamInfo decls here Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-22 Tim Janik # cb740cfa673 ASE: combo: implement AudioChain methods Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-22 Tim Janik # 956ddb7c897 ASE: main: expose main_config_.engine Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-22 Tim Janik # af125c6478e ASE: processor: allow bus registration in initialize() instead of configure() Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-22 Tim Janik # 63fc4d281d9 ASE: engine.hh: add API comments Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-21 Tim Janik # 5c38e3e3af6 ASE: defs.hh: add AudioChain, AudioCombo, AudioEngine decls Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-21 Tim Janik # 6922e5d0d81 ASE: defs.hh: move ProjectImpl, ServerImpl, TrackImpl decls here Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-21 Tim Janik # a3ae4a85a2f ASE: cxxaux.hh: rename StringVector to StringS Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-21 Tim Janik # 318c4520f05 ASE: defs.hh: move class and struct forward declarations here Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-21 Tim Janik # 3c144f4d7fd ASE: combo: add AudioCombo, an AudioProcessor container Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-21 Tim Janik # c385d1d3abd ASE: processor: provide DeviceImpl.audio_combo() Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-21 Tim Janik # c98d8095212 ASE: processor.cc: fix off-by-one in float_buffer Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-19 Tim Janik # e753001b703 ASE: tests/benchmarks.cc: not_0x80_strlen_utf8: minor simplification Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-19 Tim Janik # 4d31fdcbaf5 ASE: processor: rename DeviceImpl.audio_processor() Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-19 Tim Janik # 23f388acaaa ASE: processor: rename get_device() Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-19 Tim Janik # 6a9208b271d ASE: processor.hh: add prototype variants for AudioCombo, AudioProcessor, etc Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-16 Tim Janik # a0ca33ecf63 DEVICES: colorednoise.cc: use register_audio_processor<>() Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-16 Tim Janik # 6b5ef3d0435 ASE: processor.hh: rename register_audio_processor<>() Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-19 Tim Janik # 37f1503fa40 Merge branch 'create-tracks-ui' * create-tracks-ui: UI: b/trackview.vue: maintain a selected track across deletion UI: util.js: add array_index_equals() UI: b/app.js: consistently access globals through Data.* UI: b/trackview.vue: fix double use of dblclick UI: b/trackview.vue: use Data.project to create/remove tracks UI: b/partlist.vue: use Track.list_clips() UI: b/track-list.vue: use Project.list_tracks() UI: b/: use Gadget.name() UI: b/shell.vue: pass Project on to containees UI: b/app.js: setup Data.current_track and Data.mtrack UI: b/trackview.vue: consistently use trackview everywhere UI: b/partthumb.vue: consistently use partthumb everywhere Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-17 Tim Janik # cb47806d6e3 UI: b/trackview.vue: maintain a selected track across deletion Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-17 Tim Janik # 450cc3a6da9 UI: util.js: add array_index_equals() Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-17 Tim Janik # 9644171681f UI: b/app.js: consistently access globals through Data.* Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-14 Tim Janik # 9c3ccb44bb5 UI: b/trackview.vue: fix double use of dblclick Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-14 Tim Janik # 50b0755e048 UI: b/trackview.vue: use Data.project to create/remove tracks Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-14 Tim Janik # d960702aa5f UI: b/partlist.vue: use Track.list_clips() Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-13 Tim Janik # ec273d54db1 UI: b/track-list.vue: use Project.list_tracks() Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-13 Tim Janik # e3b75712401 UI: b/: use Gadget.name() Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-13 Tim Janik # 242a847478b UI: b/shell.vue: pass Project on to containees Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-13 Tim Janik # 466251e96c9 UI: b/app.js: setup Data.current_track and Data.mtrack Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-13 Tim Janik # ed1ce0dccac UI: b/trackview.vue: consistently use trackview everywhere Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-13 Tim Janik # 58e284c1329 UI: b/partthumb.vue: consistently use partthumb everywhere Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-19 Tim Janik # 5e024237950 Merge branch 'vue3-component-from-element' * vue3-component-from-element: UI: b/devicepanel.vue: minor rename UI: util.js: move vue_mixins.vuechildren here UI: util.js: remove unused vue_mixins.hyphen_props UI: b/contextmenu.vue: use Util.vue_component() which handles Vue3 well UI: util.js: export vue_component() UI: b/*.vue: remove unused hyphen_props mixin UI: util.js: port directive inlineblur to Vue-3 Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-11 Tim Janik # 4c4b6e83ed5 UI: b/devicepanel.vue: minor rename Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-14 Tim Janik # 310255a390a UI: util.js: move vue_mixins.vuechildren here Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-14 Tim Janik # 754b20aa71f UI: util.js: remove unused vue_mixins.hyphen_props Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-14 Tim Janik # 6b724d7088f UI: b/contextmenu.vue: use Util.vue_component() which handles Vue3 well Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-14 Tim Janik # ca7cc8a93b1 UI: util.js: export vue_component() Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-14 Tim Janik # 3a8bbd80837 UI: b/*.vue: remove unused hyphen_props mixin Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-14 Tim Janik # 7272e264a04 UI: util.js: port directive inlineblur to Vue-3 Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-19 Tim Janik # 11eea6623de Merge branch 'create-ase-tracks' * create-ase-tracks: ASE: gadget.cc: use fallback_name() instead of empty names ASE: track: add stubs for list_clips() and create_monitor() ASE: monitor: add stub for signal monitoring ASE: track: add index to fallback name ASE: cxxaux.hh: add ASE_CLASS_DECLS() and ASE_STRUCT_DECLS() ASE: api.hh: forward declare structs and classes plus *P and *S variants ASE: gadget: add fallback_name() and store an explicitly assigned name ASE: utils: add CustomDataContainer which allows type-safe foreign data members ASE: project: ensure Master track, create and remove tracks ASE: track: create track with Master flag ASE: cxxaux.hh: provide ASE_DEFINE_MAKE_SHARED() helper for private ctors Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-14 Tim Janik # 85a45fb6c81 ASE: gadget.cc: use fallback_name() instead of empty names Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-14 Tim Janik # 184e761ab70 ASE: track: add stubs for list_clips() and create_monitor() Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-14 Tim Janik # f67aa589c9a ASE: monitor: add stub for signal monitoring Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-14 Tim Janik # ef50d8f3484 ASE: track: add index to fallback name Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-14 Tim Janik # 1eeaadf066e ASE: cxxaux.hh: add ASE_CLASS_DECLS() and ASE_STRUCT_DECLS() Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-14 Tim Janik # 2ef4a95a49e ASE: api.hh: forward declare structs and classes plus *P and *S variants Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-13 Tim Janik # 430d1fed291 ASE: gadget: add fallback_name() and store an explicitly assigned name Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-13 Tim Janik # aa15100880f ASE: utils: add CustomDataContainer which allows type-safe foreign data members Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-13 Tim Janik # 6195c5c029b ASE: project: ensure Master track, create and remove tracks Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-13 Tim Janik # d4551399b6e ASE: track: create track with Master flag Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-13 Tim Janik # 8808bf8f77b ASE: cxxaux.hh: provide ASE_DEFINE_MAKE_SHARED() helper for private ctors Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-19 Tim Janik # 1df5aaff055 Merge branch 'electron-12' * electron-12: UI: b/aboutdialog.vue: adjust output for window.Electron UI: startup.js: use electron_versions() to setup window.Electron ELECTRON: main.js: add exit(status) to bridged functions ELECTRON: use Ipc invoke/handle to dispatch renderer calls to main ELECTRON: main.js: handle window.open with Electron-12 handlers Remove 'new-window' handling, used only in Electron <= 11. MISC: package.json.in: update vue, eslint, inconsolata, Electron-12 ELECTRON: main.js: use Eshell.openExternal() to open new windows in OS browser ELECTRON: main.js: provide electron_versions() via IPC ELECTRON: main.js: disable (unused) enableRemoteModule Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-12 Tim Janik # 1e0f3b58498 UI: b/aboutdialog.vue: adjust output for window.Electron Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-12 Tim Janik # 918ec2134b6 UI: startup.js: use electron_versions() to setup window.Electron Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-17 Tim Janik # c81919f7a76 ELECTRON: main.js: add exit(status) to bridged functions Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-17 Tim Janik # 9ae8d99e88b ELECTRON: use Ipc invoke/handle to dispatch renderer calls to main Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-15 Tim Janik # 4b05a6a0722 ELECTRON: main.js: handle window.open with Electron-12 handlers Remove 'new-window' handling, used only in Electron <= 11. Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-11 Tim Janik # 7d86ade9641 MISC: package.json.in: update vue, eslint, inconsolata, Electron-12 Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-15 Tim Janik # 4998720441c ELECTRON: main.js: use Eshell.openExternal() to open new windows in OS browser Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-12 Tim Janik # a7143812e18 ELECTRON: main.js: provide electron_versions() via IPC Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-12 Tim Janik # 45eb2dc7b49 ELECTRON: main.js: disable (unused) enableRemoteModule Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-19 Tim Janik # 1c35cc618fc Merge branch 'fast-rebuilds' * fast-rebuilds: MISC: package.json.in: avoid running eslint during serve, MAKE does it UI: Makefile.mk: defer non-essential build steps during incremental rebuilds MISC: colorize.sh: colorize error messages We need this for e.g. the 'eslint -f unix' output which does not support the --color option. UI: startup.js: try fast reconnects with linear backoff MISC: package.json.in: minimize delay during live-reload Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-17 Tim Janik # 514c4592e8a MISC: package.json.in: avoid running eslint during serve, MAKE does it Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-17 Tim Janik # 49b5ec4dd3e UI: Makefile.mk: defer non-essential build steps during incremental rebuilds Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-17 Tim Janik # 557881fa9bc MISC: colorize.sh: colorize error messages We need this for e.g. the 'eslint -f unix' output which does not support the --color option. Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-17 Tim Janik # 690faa7525b UI: startup.js: try fast reconnects with linear backoff Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-17 Tim Janik # 6ad22b8e651 MISC: package.json.in: minimize delay during live-reload Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-19 Tim Janik # 9b65490bf25 Merge branch 'bad-invocation-exception' * bad-invocation-exception: UI: startup.js: adapt to Jsonipc.open options API ASE: jsonapi.cc: use Jsonipc::bad_invocation to relay remote errors JSONIPC: jsonipc.hh: use Jsonipc::bad_invocation for all error codes This also removes the unused generic exception hander API. JSONIPC: jsonipc.js: simplify Jsonipc.send() reply handling This also allows stack-tracing error replies to the original request. JSONIPC: jsonipc.js: always use globalThis.* to avoid clashes The file "jsonipc.js" can be pasted as a header before generated API code. If that defines Error, Promise, etc, lookups in the header fail due to hoisting unless globalThis is used. JSONIPC: jsonipc.hh: add bad_invocation() to relay exceptions generically JSONIPC: Makefile: remove unused -D__JSONIPC_NULL_REFERENCE_THROWS__ JSONIPC: jsonipc.hh: properly relay null->reference cast errors to caller Remove __JSONIPC_NULL_REFERENCE_THROWS__ macro which sometimes caused strange const cast compiler errors. Increase robustness (on the C++ side) by relaying casting errors to the caller (Javascript), when null/undefined is passed in place of a reference argument. JSONIPC: jsonipc.hh: fix copy-and-paste error Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-16 Tim Janik # e7e89479c2e UI: startup.js: adapt to Jsonipc.open options API Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-16 Tim Janik # 945bcef87e9 ASE: jsonapi.cc: use Jsonipc::bad_invocation to relay remote errors Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-16 Tim Janik # 0b060e0afe4 JSONIPC: jsonipc.hh: use Jsonipc::bad_invocation for all error codes This also removes the unused generic exception hander API. Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-16 Tim Janik # e4d56f1dc5b JSONIPC: jsonipc.js: simplify Jsonipc.send() reply handling This also allows stack-tracing error replies to the original request. Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-16 Tim Janik # 81b5100baf2 JSONIPC: jsonipc.js: always use globalThis.* to avoid clashes The file "jsonipc.js" can be pasted as a header before generated API code. If that defines Error, Promise, etc, lookups in the header fail due to hoisting unless globalThis is used. Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-16 Tim Janik # c152e528db0 JSONIPC: jsonipc.hh: add bad_invocation() to relay exceptions generically Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-12 Tim Janik # c917a184672 JSONIPC: Makefile: remove unused -D__JSONIPC_NULL_REFERENCE_THROWS__ Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-12 Tim Janik # 97fedc0ec8a JSONIPC: jsonipc.hh: properly relay null->reference cast errors to caller Remove __JSONIPC_NULL_REFERENCE_THROWS__ macro which sometimes caused strange const cast compiler errors. Increase robustness (on the C++ side) by relaying casting errors to the caller (Javascript), when null/undefined is passed in place of a reference argument. Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-16 Tim Janik # 763bad21f4a JSONIPC: jsonipc.hh: fix copy-and-paste error Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-10 Tim Janik # d8c00fda6e6 Merge branch 'devices' * devices: ASE: engine: assign root module and add IPC stubs ASE: processor: rename start_group() DEVICES: colorednoise.cc: add white noise & pink noise generator module ASE: processor: add general purpose audio processor base type Makefile.mk: add devices/Makefile.mk DEVICES: GNUmakefile: allow 'make' from subdir DEVICES: Makefile.mk: add directory for source code of devices ASE: utils.hh: provide make_case_table<N>() for all [0…N] cases ASE: cxxaux.hh: add rotl<> and rotr<> operations Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-10 Tim Janik # d1a5644951d ASE: engine: assign root module and add IPC stubs Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-10 Tim Janik # baf957979e5 ASE: processor: rename start_group() Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-10 Tim Janik # 55b5a450e3c DEVICES: colorednoise.cc: add white noise & pink noise generator module Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-09 Tim Janik # 80e177b7788 ASE: processor: add general purpose audio processor base type Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-09 Tim Janik # c308045366a Makefile.mk: add devices/Makefile.mk Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-27 Tim Janik # efeea263b87 DEVICES: GNUmakefile: allow 'make' from subdir Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-27 Tim Janik # adb2451ecc4 DEVICES: Makefile.mk: add directory for source code of devices Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-09 Tim Janik # 5dacf792a4c ASE: utils.hh: provide make_case_table<N>() for all [0…N] cases Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-27 Tim Janik # 8f3247a7600 ASE: cxxaux.hh: add rotl<> and rotr<> operations Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-10 Tim Janik # 79053b4c095 Merge branch 'drivers' * drivers: ASE: properties.hh: use CString derived GroupId for group labels ASE: api.hh: add DeviceInfo and Device API ASE: driver-alsa.cc: fix AUDIO_BLOCK_FLOAT_ZEROS_SIZE ASE: datautils: add helpers to fill and convert float blocks ASE: utils.hh: add binary_lookup() helpers ASE: cxxaux.hh: add helper class for integer IDs up to 32 Bit, possibly enums ASE: midievent: provide event definition for MIDI message exchange ASE: engine.cc: always hook up PCM driver to event loop ASE: main.cc: load and print drivers ASE: driver-alsa.cc: add ALSA PCM and SEQMIDI drivers ASE: driver.cc: implement proper timing for 'null' PCM driver ASE: driver: add PCM and MIDI driver framework Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-27 Tim Janik # 9efa939e92e ASE: properties.hh: use CString derived GroupId for group labels Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-27 Tim Janik # 07154e83b72 ASE: api.hh: add DeviceInfo and Device API Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-25 Tim Janik # 43c75f1839f ASE: driver-alsa.cc: fix AUDIO_BLOCK_FLOAT_ZEROS_SIZE Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-25 Tim Janik # 96f58786aba ASE: datautils: add helpers to fill and convert float blocks Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-25 Tim Janik # 5423d77c1d8 ASE: utils.hh: add binary_lookup() helpers Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-25 Tim Janik # d1c07c2c876 ASE: cxxaux.hh: add helper class for integer IDs up to 32 Bit, possibly enums Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-25 Tim Janik # 614d8f08a0a ASE: midievent: provide event definition for MIDI message exchange Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-20 Tim Janik # fa61831aaf5 ASE: engine.cc: always hook up PCM driver to event loop Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-17 Tim Janik # 6ef08187c63 ASE: main.cc: load and print drivers Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-18 Tim Janik # d6c9212de49 ASE: driver-alsa.cc: add ALSA PCM and SEQMIDI drivers Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-20 Tim Janik # 2a27bbdb90f ASE: driver.cc: implement proper timing for 'null' PCM driver Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-17 Tim Janik # e579bedf0c6 ASE: driver: add PCM and MIDI driver framework Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-10 Tim Janik # e2ed279b3b1 Merge branch 'linting' * linting: MISC: Makefile.mk, run-cppcheck.sh: remove old cppcheck code JSONIPC: jsonipc.hh: fix shadowing, missing const and explicit ctors ASE: tests/benchmarks.cc: fix variable shadowing ASE: tests/benchmarks.cc: avoid implicit std::string allocation ASE: tests/benchmarks.cc: bench both, utf8len(char*) and utf8len(string&) ASE: tests/benchmarks.cc: avoid '\0' in strlen test strings ASE: testing.hh: fix const& ASE: path.cc: fix signedness ASE: memory.hh: minor fix ASE: formatter.cc: minor fixes ASE: fix licenses ASE: Makefile.mk: cleanups, rename check-ase-tests MISC: Makefile.mk: add lint-unused rule MISC: Makefile.mk: add lint-cppcheck rule MISC: Makefile.mk: add lint and lint-clean rules MISC: Makefile.mk: add .LINT_CCFLAGS MISC: Makefile.mk: exclude external headers from clang-tidy MISC: Makefile.mk: clang-tidy: parallelize and generate one log per source file Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-10 Tim Janik # fd3f68d5c05 MISC: Makefile.mk, run-cppcheck.sh: remove old cppcheck code Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-09 Tim Janik # fe5508fc5a2 JSONIPC: jsonipc.hh: fix shadowing, missing const and explicit ctors Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-09 Tim Janik # 5b84ad6f7b4 ASE: tests/benchmarks.cc: fix variable shadowing Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-10 Tim Janik # 0e65d1485ae ASE: tests/benchmarks.cc: avoid implicit std::string allocation Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-10 Tim Janik # 17191c9d01e ASE: tests/benchmarks.cc: bench both, utf8len(char*) and utf8len(string&) Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-10 Tim Janik # b62bb14c73c ASE: tests/benchmarks.cc: avoid '\0' in strlen test strings Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-09 Tim Janik # 7e5ca3f9719 ASE: testing.hh: fix const& Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-09 Tim Janik # 142931f196b ASE: path.cc: fix signedness Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-09 Tim Janik # ab6cb765005 ASE: memory.hh: minor fix Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-09 Tim Janik # a5e5fb2b187 ASE: formatter.cc: minor fixes Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-10 Tim Janik # c15d045fdae ASE: fix licenses Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-09 Tim Janik # 407e843ac9f ASE: Makefile.mk: cleanups, rename check-ase-tests Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-07 Tim Janik # 0876ac724bc MISC: Makefile.mk: add lint-unused rule Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-07 Tim Janik # 12e3a437dc0 MISC: Makefile.mk: add lint-cppcheck rule Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-07 Tim Janik # 8bc3840cd8e MISC: Makefile.mk: add lint and lint-clean rules Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-06 Tim Janik # bb65f867de8 MISC: Makefile.mk: add .LINT_CCFLAGS Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-05 Tim Janik # 411675f72e7 MISC: Makefile.mk: exclude external headers from clang-tidy Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-05 Tim Janik # 8d04733e602 MISC: Makefile.mk: clang-tidy: parallelize and generate one log per source file Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-10 Tim Janik # a4bcb673743 Merge branch 'error-enum' plus cleanups * error-enum: ASE: api.hh, server.cc: add ase_error_*() helpers and Error enum Makefile.mk, config-uname.mk: use MODE=devel for debugging and optimizations UI: b/icon.vue: add unicode link ASE: utils: add ase_gettext() dummy to implement _() ASE: internal.hh: provide CLAMP() ASE: cxxaux.hh: remove outdated ASE_DECLARE_VLA() ASE: cxxaux.hh: always use namespaced std::map and std::vector ASE: loop: merge prepare-phase timeout_usecs into LoopState and fix vectors ASE: memory.hh: use std::vector ASE: strings: use std::vector ASE: testing.hh: use std::vector Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-17 Tim Janik # d3b0c8e57dc ASE: api.hh, server.cc: add ase_error_*() helpers and Error enum Signed-off-by: Tim Janik <timj@gnu.org> 2021-03-10 Tim Janik # 7ad57bba6de Makefile.mk, config-uname.mk: use MODE=devel for debugging and optimizations Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-23 Tim Janik # 963ab190643 UI: b/icon.vue: add unicode link Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-17 Tim Janik # f773f1edf45 ASE: utils: add ase_gettext() dummy to implement _() Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-18 Tim Janik # a85361805ef ASE: internal.hh: provide CLAMP() Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-19 Tim Janik # bf76472afb4 ASE: cxxaux.hh: remove outdated ASE_DECLARE_VLA() Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-19 Tim Janik # dee590d6f31 ASE: cxxaux.hh: always use namespaced std::map and std::vector Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-18 Tim Janik # 04ca6c19454 ASE: loop: merge prepare-phase timeout_usecs into LoopState and fix vectors Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-19 Tim Janik # 67e0113b99b ASE: memory.hh: use std::vector Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-19 Tim Janik # 5da02f44a09 ASE: strings: use std::vector Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-19 Tim Janik # 8419440e2da ASE: testing.hh: use std::vector Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-16 Tim Janik # f6e550a6f31 Merge branch 'engine-thread' * engine-thread: ASE: utils: move JobQueue here ASE: main.cc: start AudioEngine thread and run tests from main loop ASE: engine: add thread handling for AudioEngine MISC: package.json.in: exit nodemon if its subprocess make fails MISC: package.json.in: exiting AnklangSynthEngine during 'serve' is an error UI: Makefile.mk: adjust comment ASE: server.cc: quit the main loop on Server.shutdown() ASE: cxxaux.hh: add VoidF type alias ASE: platform.hh: add AsyncBlockingQueue - pop() blocks until pairing push() ASE: Makefile.mk: integrate test functions ASE: tests/Makefile.mk: list test sources and objects ASE: tests/benchmarks.cc: add UTF-8 and FastMemory benchmarks ASE: internal.hh: add TEST_BENCHMARK() ASE: memory: add an allocator for fast huge pages and CString ASE: internal.hh: rename TEST_INTEGRITY() ASE: server: make Server singelton persistent ASE: cxxaux.hh: add Persistent<> to fix static initialization order fiasco Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-12 Tim Janik # 1a5e608c819 ASE: utils: move JobQueue here Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-16 Tim Janik # 9c8f1429f9c ASE: main.cc: start AudioEngine thread and run tests from main loop Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-16 Tim Janik # a1f086ab90d ASE: engine: add thread handling for AudioEngine Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-16 Tim Janik # ec9d449423a MISC: package.json.in: exit nodemon if its subprocess make fails Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-16 Tim Janik # 8b7b893f213 MISC: package.json.in: exiting AnklangSynthEngine during 'serve' is an error Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-16 Tim Janik # 30c85d327ea UI: Makefile.mk: adjust comment Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-15 Tim Janik # 36dfd80f434 ASE: server.cc: quit the main loop on Server.shutdown() Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-15 Tim Janik # 431ff198181 ASE: cxxaux.hh: add VoidF type alias Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-15 Tim Janik # ef300eef440 ASE: platform.hh: add AsyncBlockingQueue - pop() blocks until pairing push() Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-15 Tim Janik # 75b6e5ada98 ASE: Makefile.mk: integrate test functions Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-15 Tim Janik # ed7b60f2084 ASE: tests/Makefile.mk: list test sources and objects Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-15 Tim Janik # 0ff154e6899 ASE: tests/benchmarks.cc: add UTF-8 and FastMemory benchmarks Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-15 Tim Janik # cea5aa74ae2 ASE: internal.hh: add TEST_BENCHMARK() Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-15 Tim Janik # 05fd2039c5f ASE: memory: add an allocator for fast huge pages and CString Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-15 Tim Janik # 38266db402d ASE: internal.hh: rename TEST_INTEGRITY() Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-15 Tim Janik # ae0aac8b086 ASE: server: make Server singelton persistent Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-15 Tim Janik # 08d2fde1766 ASE: cxxaux.hh: add Persistent<> to fix static initialization order fiasco Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-14 Tim Janik # 181f93e308b Merge branch 'readme+version' * readme+version: README.md: add README with intro, badges, roadmap, license and links Makefile.mk, misc/version.sh: provide version_* variables up front Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-14 Tim Janik # e653f58d7ed README.md: add README with intro, badges, roadmap, license and links Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-14 Tim Janik # 1b064228ca8 Makefile.mk, misc/version.sh: provide version_* variables up front Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-14 Tim Janik # 4d171aa832b Merge branch 'license' * license: MISC: LGPL-2.1.txt: add LGPL-2.1 license MISC: MPL-2.0.txt: add MPL-2 license Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-14 Tim Janik # be79646cd37 MISC: LGPL-2.1.txt: add LGPL-2.1 license Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-14 Tim Janik # dc1869aa741 MISC: MPL-2.0.txt: add MPL-2 license Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-12 Tim Janik # 73117e8861f Merge branch 'doc' * doc: DOC: GNUmakefile: allow subdir make UI: Makefile.mk: build ui/vue-docs.md for the manual DOC: Makefile.mk: generate anklang-manual.html DOC: pandoc-pdf.tex: allow PDF generation DOC: filt-docs2.py: all Pandoc filter to increase heading level DOC: ch-appendix.md: add interpolation background and notes on modifier keys DOC: ch-development.md: describe important development aspects DOC: ch-intro.md: introduce Anklang manual Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-22 Tim Janik # dff76d119db DOC: GNUmakefile: allow subdir make Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # 0a9743a4462 UI: Makefile.mk: build ui/vue-docs.md for the manual Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-22 Tim Janik # 9bf111182e3 DOC: Makefile.mk: generate anklang-manual.html Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # 0dc9a6b42a9 DOC: pandoc-pdf.tex: allow PDF generation Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # 5d5390d9f5b DOC: filt-docs2.py: all Pandoc filter to increase heading level Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # 223978f7a20 DOC: ch-appendix.md: add interpolation background and notes on modifier keys Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # 550efddba15 DOC: ch-development.md: describe important development aspects Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # b6e1c0214bd DOC: ch-intro.md: introduce Anklang manual Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # 973ea7b5b2c Merge branch 'doc-style' * doc-style: DOC: style/Makefile.mk: build faketex.css, fonts and MathJax DOC: style/mathjax-config.js: configure MathJax touse SVG and fit faketex.scss DOC: style/faketex.scss, style/features.scss: mimic TeX looks with CSS Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # bce7ad92ac5 DOC: style/Makefile.mk: build faketex.css, fonts and MathJax Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # 8b1dcee44c4 DOC: style/mathjax-config.js: configure MathJax touse SVG and fit faketex.scss Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # 44e9ee78239 DOC: style/faketex.scss, style/features.scss: mimic TeX looks with CSS Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # 0e8010c6c2d Merge branch 'ui' * ui: UI: Makefile.mk: generate ui/favicon.ico MISC: package.json.in: add icon-gen UI: assets/favicon.svg: add favicon for Anklang UI: startup.js: add UI startup logic UI: util.js: add UI utilities UI: .eslintrc.js: add eslint config for Vue3 UI: sfc-compile.js: split single file components and process styles with scss UI: theme.scss, styles.scss: provide main CSS theme UI: index.html: provide main UI entry UI: assets/eknob.svg: add SVG for knob.vue UI: cssaux.scss: add CSS utilities UI: chromatic-sass2.js: add chroma-js to dart-sass binding UI: assets/spinners.svg: add image for spin button styling UI: Makefile.mk: build HTML UI UI: b/: add building blocks for the UI Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # 1483fe20379 UI: Makefile.mk: generate ui/favicon.ico Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # eb965aefa1f MISC: package.json.in: add icon-gen Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # f1b6b6a66bc UI: assets/favicon.svg: add favicon for Anklang Signed-off-by: Tim Janik <timj@gnu.org> 2020-12-09 Tim Janik # 2a1a98a1bf8 UI: startup.js: add UI startup logic Signed-off-by: Tim Janik <timj@gnu.org> 2020-12-09 Tim Janik # 30e2c3a8cab UI: util.js: add UI utilities Signed-off-by: Tim Janik <timj@gnu.org> 2020-12-14 Tim Janik # a4d9d90b190 UI: .eslintrc.js: add eslint config for Vue3 Signed-off-by: Tim Janik <timj@gnu.org> 2020-12-09 Tim Janik # 8dcfd7612b3 UI: sfc-compile.js: split single file components and process styles with scss Signed-off-by: Tim Janik <timj@gnu.org> 2020-12-09 Tim Janik # 288387e1ca5 UI: theme.scss, styles.scss: provide main CSS theme Signed-off-by: Tim Janik <timj@gnu.org> 2020-12-09 Tim Janik # 4e2db308b11 UI: index.html: provide main UI entry Signed-off-by: Tim Janik <timj@gnu.org> 2020-12-09 Tim Janik # e8803ee2d8b UI: assets/eknob.svg: add SVG for knob.vue Signed-off-by: Tim Janik <timj@gnu.org> 2020-12-09 Tim Janik # 6c4b88fd448 UI: cssaux.scss: add CSS utilities Signed-off-by: Tim Janik <timj@gnu.org> 2020-12-09 Tim Janik # 822b206c5d8 UI: chromatic-sass2.js: add chroma-js to dart-sass binding Signed-off-by: Tim Janik <timj@gnu.org> 2020-12-14 Tim Janik # 01aab092378 UI: assets/spinners.svg: add image for spin button styling Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # f2ec2cbb942 UI: Makefile.mk: build HTML UI Signed-off-by: Tim Janik <timj@gnu.org> 2020-12-09 Tim Janik # a1af68ca066 UI: b/: add building blocks for the UI Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # 532b2e2fab5 Merge branch 'electron' * electron: ELECTRON: main.js: create Anklang UI window and start AnklangSynthEngine ELECTRON: preload.js: provide minimal IPC for sandboxed electron apps ELECTRON: Makefile.mk: build electron/anklang Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # a41a3628845 ELECTRON: main.js: create Anklang UI window and start AnklangSynthEngine Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # 33e14417fac ELECTRON: preload.js: provide minimal IPC for sandboxed electron apps Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # 98fa2d5caa4 ELECTRON: Makefile.mk: build electron/anklang Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # 10686f14d72 Merge branch 'package-json' * package-json: Makefile.mk: add PACKAGE_CONFIG to package.json and install npm packages MISC: package.json.in: list electron, vue, and other packages for a html ui Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # b38097a4e85 Makefile.mk: add PACKAGE_CONFIG to package.json and install npm packages Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # d0292c266ab MISC: package.json.in: list electron, vue, and other packages for a html ui Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # deffc84ecdb Merge branch 'anklang-icons' * anklang-icons: IMAGES: anklangicons.sh: script to package icons and cursors IMAGES: icons/: add on, off, folder and menu-more drawings IMAGES: cursors/: add Eraser and Pen drawings IMAGES: README.md: create subdir for images, icons, cursors Signed-off-by: Tim Janik <timj@gnu.org> 2020-11-23 Tim Janik # 8d44d8a4c3c IMAGES: anklangicons.sh: script to package icons and cursors Signed-off-by: Tim Janik <timj@gnu.org> 2020-11-23 Tim Janik # ef249d77848 IMAGES: icons/: add on, off, folder and menu-more drawings Signed-off-by: Tim Janik <timj@gnu.org> 2020-11-23 Tim Janik # aaeeb579e2c IMAGES: cursors/: add Eraser and Pen drawings Signed-off-by: Tim Janik <timj@gnu.org> 2020-11-23 Tim Janik # 847effa0678 IMAGES: README.md: create subdir for images, icons, cursors Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # b1538642e64 Merge branch 'ase' * ase: ASE: GNUmakefile: allow 'make' from subdir ASE: Makefile.mk: build AnklangSynthEngine ASE: add Anklang sound engine sources Squashed ChangeLog of recent developments: * main.cc: support embed-<fd> with authenticated websocket * jsonapi: support websocket subprotocol as authentication * websocket: support subprotocols and an unlisten callback * platform: add user_id(), user_name(), user_real_name() * server: store Preferences in anklangrc.json * serialize: implement SKIP_ZERO, SKIP_EMPTYSTRING purging from Value * server: emit change notification from Preferences properties * properties: Bag: allow common notification hook * api.hh: add Emittable::js_trigger() to send Events to Javascript * jsonapi: add/kill and notify JsTrigger invocations * jsonapi: add JsTrigger bindings * value.hh: add JsTrigger skeleton * utils: add Aux::contains(), Aux::erase_first(), Aux::erase_all() * properties: notify via Emittable.emit_event() * object: implement on_event() and emit_event() for Emittable * api.hh: introduce Emittable * value: add constructors, repr() and Event * cxxaux.cc: raise SIGQUIT on fatal-warnings * main.cc: check for ASE_FEATURE=fatal-warnings * serialize: warn if transient object wrappers are used during serialization * jsonapi.cc: use Jsonipc::Scope::PURGE_TEMPORARIES for IPC call stacks * value: add INSTANCE, where InstanceP is a SharedBaseP * api.hh: derive Property, Object from SharedBase * cxxaux: add VirtualBase * serialize: handle Value, ValueS, ValueR serialization * value: allow ==, != and initializer list for Value, ValueS, ValueR * serialize: add json_stringify() json_parse() and tests * serialize.cc: save/load JSON root value directly * serialize: serialize std::vector<T> * serialize: add DataConverter<Serializable> and simplify * serialize: serialize Jsonipc-bound types to/from Json * jsonapi.hh: allow ValueP serialization * value.cc: always construct a missing Value in place of nullptr * api.hh: allow session data storage on the server * value: turn ValueS and ValueR into pointer arrays * properties.cc: add Value records and sequences * internal.hh: provide __DEV__ * main.cc: debug websocket traffic with ASE_DEBUG=jsipc * server: provide Preferences Properties * properties: add Properties interfaces and implementations * gadget: Base class for objects with properties * jsonapi.cc: colorize error replies * jsonapi.cc: print REQUEST/REPLY * main: add --jsipc * project: handle synth project functionality * add Project, Track and Clip * server: provide global API entry points * api.hh: define the external AnklangSynthEngine API * main: support --js-api * jsonapi: add Value bindings * jsonapi: dispatch Jsonipc calls via WebSocket * jsonapi: add Jsonipc bindings and WebSocket integration * value: add Value records, sequences and repr() * value: add Value for handling generic value in the API * internal.hh: add JSONIPC_INHERIT() helper * platform: add helpers for runpath, i18n, executable_path and CPU * platform: add helpers for ANSI colors, threads, timestamps, semaphores * main: close all sockets on SIGUSR2 * loop: add event loop and handling for FD polling and unix signals * mime-types.hh: add mime types for WebSocket Content-Type header fields * websocket: add websocket handling and simple http server * main: the main AnklangSynthEngine logic, config and main loop * blob: add simple wrapper for file I/O * utils: add utilities for stdout/stderr, debugging, jump tables * strings: utilities for string handling and conversions * path: utilities for file path and search path handling * internal.hh: add shorthand macros * cxxaux: provide basic C++17 types and helpers Signed-off-by: Tim Janik <timj@gnu.org> 2020-12-30 Tim Janik # c7235acc27f ASE: GNUmakefile: allow 'make' from subdir Signed-off-by: Tim Janik <timj@gnu.org> 2020-12-17 Tim Janik # 916e0b538db ASE: Makefile.mk: build AnklangSynthEngine Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-10 Tim Janik # 5a0a75db935 ASE: add Anklang sound engine sources Squashed ChangeLog of recent developments: * main.cc: support embed-<fd> with authenticated websocket * jsonapi: support websocket subprotocol as authentication * websocket: support subprotocols and an unlisten callback * platform: add user_id(), user_name(), user_real_name() * server: store Preferences in anklangrc.json * serialize: implement SKIP_ZERO, SKIP_EMPTYSTRING purging from Value * server: emit change notification from Preferences properties * properties: Bag: allow common notification hook * api.hh: add Emittable::js_trigger() to send Events to Javascript * jsonapi: add/kill and notify JsTrigger invocations * jsonapi: add JsTrigger bindings * value.hh: add JsTrigger skeleton * utils: add Aux::contains(), Aux::erase_first(), Aux::erase_all() * properties: notify via Emittable.emit_event() * object: implement on_event() and emit_event() for Emittable * api.hh: introduce Emittable * value: add constructors, repr() and Event * cxxaux.cc: raise SIGQUIT on fatal-warnings * main.cc: check for ASE_FEATURE=fatal-warnings * serialize: warn if transient object wrappers are used during serialization * jsonapi.cc: use Jsonipc::Scope::PURGE_TEMPORARIES for IPC call stacks * value: add INSTANCE, where InstanceP is a SharedBaseP * api.hh: derive Property, Object from SharedBase * cxxaux: add VirtualBase * serialize: handle Value, ValueS, ValueR serialization * value: allow ==, != and initializer list for Value, ValueS, ValueR * serialize: add json_stringify() json_parse() and tests * serialize.cc: save/load JSON root value directly * serialize: serialize std::vector<T> * serialize: add DataConverter<Serializable> and simplify * serialize: serialize Jsonipc-bound types to/from Json * jsonapi.hh: allow ValueP serialization * value.cc: always construct a missing Value in place of nullptr * api.hh: allow session data storage on the server * value: turn ValueS and ValueR into pointer arrays * properties.cc: add Value records and sequences * internal.hh: provide __DEV__ * main.cc: debug websocket traffic with ASE_DEBUG=jsipc * server: provide Preferences Properties * properties: add Properties interfaces and implementations * gadget: Base class for objects with properties * jsonapi.cc: colorize error replies * jsonapi.cc: print REQUEST/REPLY * main: add --jsipc * project: handle synth project functionality * add Project, Track and Clip * server: provide global API entry points * api.hh: define the external AnklangSynthEngine API * main: support --js-api * jsonapi: add Value bindings * jsonapi: dispatch Jsonipc calls via WebSocket * jsonapi: add Jsonipc bindings and WebSocket integration * value: add Value records, sequences and repr() * value: add Value for handling generic value in the API * internal.hh: add JSONIPC_INHERIT() helper * platform: add helpers for runpath, i18n, executable_path and CPU * platform: add helpers for ANSI colors, threads, timestamps, semaphores * main: close all sockets on SIGUSR2 * loop: add event loop and handling for FD polling and unix signals * mime-types.hh: add mime types for WebSocket Content-Type header fields * websocket: add websocket handling and simple http server * main: the main AnklangSynthEngine logic, config and main loop * blob: add simple wrapper for file I/O * utils: add utilities for stdout/stderr, debugging, jump tables * strings: utilities for string handling and conversions * path: utilities for file path and search path handling * internal.hh: add shorthand macros * cxxaux: provide basic C++17 types and helpers Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # 726001d942a Merge branch 'misc' * misc: MISC: Makefile.mk, clang-tidy.ignore: generate clang-tidy and cppcheck reports MISC: subdirs.mk: add helper to build with make from subdirs MISC: run-cppcheck.sh: add wrapper script to run 'cppcheck' MISC: blame-lines: use git to blame file lines on git author Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # a94e581cf65 MISC: Makefile.mk, clang-tidy.ignore: generate clang-tidy and cppcheck reports Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # deef65de0dc MISC: subdirs.mk: add helper to build with make from subdirs Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # 9c3f357495d MISC: run-cppcheck.sh: add wrapper script to run 'cppcheck' Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-11 Tim Janik # 612d3ffe3e8 MISC: blame-lines: use git to blame file lines on git author Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-10 Tim Janik # 9240c04bf21 Merge branch 'jsonipc' * jsonipc: JSONIPC: Makefile: make test targets .INTERMEDIATE JSONIPC: jsonipc.hh: allow fallback for Serializable<T>::serialize_from_json() JSONIPC: jsonipc.js: simplify Jsonipc.receive() interface Get rid of the old observe/unobserve implementation. JSONIPC: jsonipc.hh: add jsonobject_to_string() convenience routine JSONIPC: Makefile: use -D__JSONIPC_NULL_REFERENCE_THROWS__ for testing JSONIPC: jsonipc.hh: use const dummy if ! __JSONIPC_NULL_REFERENCE_THROWS__ JSONIPC: cxxjip.py: ignore incomplete classes JSONIPC: jsonipc.hh: sort classes on printout by inheritance depth JSONIPC: cxxjip.py: exclude inheritance from unknown bases JSONIPC: jsonipc.hh: keep locals in InstanceMap unless Scope::PURGE_TEMPORARIES JSONIPC: jsonipc.hh: add jsonvalue_to_string() JSONIPC: jsonipc.hh: rename wrapper_from_json() JSONIPC: jsonipc.hh: add virtual wrapper_to_json() JSONIPC: jsonipc.hh: simplify InstanceMap.lookup_wrapper() JSONIPC: jsonipc.hh: simplify InstanceMap::lookup_wrapper() callers JSONIPC: jsonipc.hh: remove unused get_objectid() JSONIPC: jsonipc.hh: remove indirection JSONIPC: jsonipc.hh: fix static method call JSONIPC: testjsonipc.cc: test shared_from_this() uses JSONIPC: jsonipc.hh: use Class.shared_from_this() instead of eternal() JSONIPC: Makefile: compile as C++17 JSONIPC: jsonipc.hh: small simplification JSONIPC: jsonipc.hh: fix Serializable<> shared_ptr JSONIPC: testjsonipc.cc: test Serializable<> to shared_ptr JSONIPC: jsonipc.hh: remove leaky copy ctor handling JSONIPC: jsonipc.hh: remove "__typename__" extension on Serializable<> JSONIPC: jsonipc.hh: allow shared_ptr to Serializable JSONIPC: jsonipc.js: `null` objects cannot be indexed JSONIPC: cxxjip.py: filter out classes from includes JSONIPC: cxxjip.py: filter out classes with underscore JSONIPC: cxxjip.py: abort if castxml failed JSONIPC: cxxjip.py: parse c++17 code JSONIPC: jsonipc.js: allow onclose handler on open() JSONIPC: guard access to JS 'Object.' since C++ might introduce 'class Object' JSONIPC: cxxjip.py: fix class with bases and no methods JSONIPC: jsonipc.hh: generate ENUMS before other JS bindings JSONIPC: cxxjip.py: use castxml to generate Jsonipc binding code from C++ JSONIPC: jsonipc.hh: freeze JS objects representing enums JSONIPC: jsonipc.js: rename file and 'export Jsonipc' JSONIPC: testjsonipc.cc: fixup Enum initialization JSONIPC: jsonipc.hh: simplify class printing and ensure inheritance order JSONIPC: jsonipc.hh: introduce ClassPrinter::Op JSONIPC: jsonipc.hh: ceate ClassPrinter with C++ type JSONIPC: jsonipc.hh: shared_ptr are needed to auto-detect up-cast objects JSONIPC: Makefile: fix include path for rapidjson JSONIPC: jsonipc.hh: avoid rethrowing exceptions GDB does not follow rethrown exceptions, so avoid it where possible. JSONIPC: jsonipc.hh: add IpcDispatcher.set_exception_handler() JSONIPC: jsonipc.hh: just stringify enums by substituting ':+' with '.' This effectively yields the Javascript identifier for an enum value as enum string *and* is predictable from typename and value name in other languages. JSONIPC: jsonipc.hh: always register JS classes with canonified name Treat JS class name argument to Class<> constructor as JS class name alias. JSONIPC: require an active Scope and support InstanceMap per-Scope JSONIPC: Makefile: add 'make check' JSONIPC: jsonipc.hh: always use `static inline` except where ODR applies Generally, use `static inline` to avoid useless linker emission of unused free standing functions. Except for functions that define `static` variables, these need to be emitted for global linkage (via `extern inline` aka `inline`), so the linker can apply the One-Definition-Rule to produce a single global symbol. JSONIPC: jsonipc.hh: avoid linker emission of static class variables JSONIPC: jsonipc.hh: add __typename__ to Serializable JSONIPC: jsonipc.hh: fix g++-8 missing-prototype warning by inlining JSONIPC: jsonipc.hh: freeze JS classes after initialization The current implementation makes no efforts to match or unify Jsonipc class instances, so several JS object references often refer to one remote instance. As such, adding/mutating data on Jsonipc class instances is unlikely useful and can easily appear to be lost. To avoid accidental attempts, the classes are now frozen after construction. JSONIPC: head.js: allow 'arraybuffer' message handling via onbinary JSONIPC: jsonipc.hh: use getter/setter method to avoid 'async get' properties JSONIPC: jsonipc.hh: add restrictions to IsWrappableClass<> to satisfy g++-7.4 JSONIPC: head.js: add marshalling code for Javascript * perform object conversions recursively * add observe/unobserve to $jsonipc for notifications * wrap/unwrap call argument objects * auto-unwrap object ids in $jsonipc.send() JSONIPC: Makefile: build testjsonipc JSONIPC: testjsonipc: add simple jsonipc test program JSONIPC: jsonipc.hh: add binding to use C++ struct APIs via JSON messages Introduce Jsonipc, a header-only binding to use C++ struct APIs via JSON messages * generate data JS classes for Serializable * deprecate Class.copy() and Class.copyable() * introduce Serializable<> * introduce TypeInfo base class * use RTTI to wrap objects with their most derived Class<> * allow passing an allocator to CallbackInfo * add Scope to keep track of temporary objects * specialize Convert<> for std::vector derived types * register and use enum value strings * rearrange the ClassPrinter to deal with enum class exports. * move 'this' into JSON params * rename n_args() and ntharg() of CallbackInfo * find baseclass methods and upcast recursively * add .set(name,getter,setter) for properties * fix inheritance registration * pass RTTI classnames to Javascript * use '{"$id":<int>}' as object format * pass JsonAllocator& into all to_json() calls * throw method name on duplicate registration * implement enums via std::underlying_type<> * hide '$id' from enumeration and make it read-only * add setter support via member object pointer * add Class.copy() and Class.copyable() for copy ctors * add Class.eternal() for static class instances * implement object wrapping for shared_ptr * add getter support via member object pointer * generate Javascript module ouput * add IpcDispatcher.add_method() * simplify templates with REQUIRES<> * add header file for IPC via JSON messages Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-07 Tim Janik # 03eb963eef7 JSONIPC: Makefile: make test targets .INTERMEDIATE Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-04 Tim Janik # 4dfa9fde5e3 JSONIPC: jsonipc.hh: allow fallback for Serializable<T>::serialize_from_json() Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-01 Tim Janik # ea68aa2ec2d JSONIPC: jsonipc.js: simplify Jsonipc.receive() interface Get rid of the old observe/unobserve implementation. Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-01 Tim Janik # f6b3e5eb533 JSONIPC: jsonipc.hh: add jsonobject_to_string() convenience routine Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-30 Tim Janik # e3412d5f1aa JSONIPC: Makefile: use -D__JSONIPC_NULL_REFERENCE_THROWS__ for testing Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-30 Tim Janik # a6fa3594ed0 JSONIPC: jsonipc.hh: use const dummy if ! __JSONIPC_NULL_REFERENCE_THROWS__ Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-30 Tim Janik # a4e7214b8b5 JSONIPC: cxxjip.py: ignore incomplete classes Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-26 Tim Janik # 802a13ab935 JSONIPC: jsonipc.hh: sort classes on printout by inheritance depth Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-26 Tim Janik # a98a9048de4 JSONIPC: cxxjip.py: exclude inheritance from unknown bases Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-25 Tim Janik # b2d0f690440 JSONIPC: jsonipc.hh: keep locals in InstanceMap unless Scope::PURGE_TEMPORARIES Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-25 Tim Janik # 1e4967283bc JSONIPC: jsonipc.hh: add jsonvalue_to_string() Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-24 Tim Janik # d69b7cd9aa0 JSONIPC: jsonipc.hh: rename wrapper_from_json() Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-24 Tim Janik # 9b29bdcd12e JSONIPC: jsonipc.hh: add virtual wrapper_to_json() Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-24 Tim Janik # 660c861657b JSONIPC: jsonipc.hh: simplify InstanceMap.lookup_wrapper() Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-24 Tim Janik # cb72117226e JSONIPC: jsonipc.hh: simplify InstanceMap::lookup_wrapper() callers Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-24 Tim Janik # ef8bc284e9e JSONIPC: jsonipc.hh: remove unused get_objectid() Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-24 Tim Janik # 6e00b7e1344 JSONIPC: jsonipc.hh: remove indirection Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-24 Tim Janik # da88cd08399 JSONIPC: jsonipc.hh: fix static method call Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-24 Tim Janik # 8bee46ec979 JSONIPC: testjsonipc.cc: test shared_from_this() uses Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-24 Tim Janik # e8aa255ee67 JSONIPC: jsonipc.hh: use Class.shared_from_this() instead of eternal() Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-24 Tim Janik # 90c83898a23 JSONIPC: Makefile: compile as C++17 Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-24 Tim Janik # 84ab503fb93 JSONIPC: jsonipc.hh: small simplification Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-24 Tim Janik # 65e4063eca6 JSONIPC: jsonipc.hh: fix Serializable<> shared_ptr Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-24 Tim Janik # f3c4aeb03ab JSONIPC: testjsonipc.cc: test Serializable<> to shared_ptr Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-24 Tim Janik # be50981f82f JSONIPC: jsonipc.hh: remove leaky copy ctor handling Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-24 Tim Janik # ceb81c86181 JSONIPC: jsonipc.hh: remove "__typename__" extension on Serializable<> Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-18 Tim Janik # 13d220e1bf4 JSONIPC: jsonipc.hh: allow shared_ptr to Serializable Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-16 Tim Janik # 956f4dbdcc1 JSONIPC: jsonipc.js: `null` objects cannot be indexed Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-16 Tim Janik # 20d5437bb08 JSONIPC: cxxjip.py: filter out classes from includes Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-16 Tim Janik # d42c39fc019 JSONIPC: cxxjip.py: filter out classes with underscore Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-16 Tim Janik # 60e52e7f758 JSONIPC: cxxjip.py: abort if castxml failed Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-16 Tim Janik # e726a10d556 JSONIPC: cxxjip.py: parse c++17 code Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-15 Tim Janik # b6a31571fa3 JSONIPC: jsonipc.js: allow onclose handler on open() Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-04 Tim Janik # c11e28ab298 JSONIPC: guard access to JS 'Object.' since C++ might introduce 'class Object' Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-04 Tim Janik # 011e2c97811 JSONIPC: cxxjip.py: fix class with bases and no methods Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-04 Tim Janik # 23bec75c93c JSONIPC: jsonipc.hh: generate ENUMS before other JS bindings Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-04 Tim Janik # 5ddcfd3f2e1 JSONIPC: cxxjip.py: use castxml to generate Jsonipc binding code from C++ Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-04 Tim Janik # d83c63767a7 JSONIPC: jsonipc.hh: freeze JS objects representing enums Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-04 Tim Janik # ac83b4d0deb JSONIPC: jsonipc.js: rename file and 'export Jsonipc' Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-03 Tim Janik # 5527fc329c6 JSONIPC: testjsonipc.cc: fixup Enum initialization Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-03 Tim Janik # d8c4ec009e8 JSONIPC: jsonipc.hh: simplify class printing and ensure inheritance order Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-02 Tim Janik # 528251c47df JSONIPC: jsonipc.hh: introduce ClassPrinter::Op Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-02 Tim Janik # b9c8f5fd3ac JSONIPC: jsonipc.hh: ceate ClassPrinter with C++ type Signed-off-by: Tim Janik <timj@gnu.org> 2021-01-02 Tim Janik # ba578e1e254 JSONIPC: jsonipc.hh: shared_ptr are needed to auto-detect up-cast objects Signed-off-by: Tim Janik <timj@gnu.org> 2020-11-21 Tim Janik # f4f1794c508 JSONIPC: Makefile: fix include path for rapidjson Signed-off-by: Tim Janik <timj@gnu.org> 2020-07-14 Tim Janik # cc767f28b89 JSONIPC: jsonipc.hh: avoid rethrowing exceptions GDB does not follow rethrown exceptions, so avoid it where possible. Signed-off-by: Tim Janik <timj@gnu.org> 2020-07-06 Tim Janik # cb38f12c30b JSONIPC: jsonipc.hh: add IpcDispatcher.set_exception_handler() Signed-off-by: Tim Janik <timj@gnu.org> 2020-06-23 Tim Janik # 2bb9e5d5074 JSONIPC: jsonipc.hh: just stringify enums by substituting ':+' with '.' This effectively yields the Javascript identifier for an enum value as enum string *and* is predictable from typename and value name in other languages. Signed-off-by: Tim Janik <timj@gnu.org> 2020-05-29 Tim Janik # 663fb59c6d1 JSONIPC: jsonipc.hh: always register JS classes with canonified name Treat JS class name argument to Class<> constructor as JS class name alias. Signed-off-by: Tim Janik <timj@gnu.org> 2019-11-12 Tim Janik # fb85f5577f5 JSONIPC: require an active Scope and support InstanceMap per-Scope Signed-off-by: Tim Janik <timj@gnu.org> 2019-11-12 Tim Janik # 80c3babed10 JSONIPC: Makefile: add 'make check' Signed-off-by: Tim Janik <timj@gnu.org> 2019-10-16 Tim Janik # 59b0ea7ebca JSONIPC: jsonipc.hh: always use `static inline` except where ODR applies Generally, use `static inline` to avoid useless linker emission of unused free standing functions. Except for functions that define `static` variables, these need to be emitted for global linkage (via `extern inline` aka `inline`), so the linker can apply the One-Definition-Rule to produce a single global symbol. Signed-off-by: Tim Janik <timj@gnu.org> 2019-10-16 Tim Janik # bd7700c9837 JSONIPC: jsonipc.hh: avoid linker emission of static class variables Signed-off-by: Tim Janik <timj@gnu.org> 2019-09-13 Tim Janik # 111b452d7b9 JSONIPC: jsonipc.hh: add __typename__ to Serializable Signed-off-by: Tim Janik <timj@gnu.org> 2019-09-13 Tim Janik # 4eb01608fe2 JSONIPC: jsonipc.hh: fix g++-8 missing-prototype warning by inlining Signed-off-by: Tim Janik <timj@gnu.org> 2019-08-31 Tim Janik # 3fb1a3b7356 JSONIPC: jsonipc.hh: freeze JS classes after initialization The current implementation makes no efforts to match or unify Jsonipc class instances, so several JS object references often refer to one remote instance. As such, adding/mutating data on Jsonipc class instances is unlikely useful and can easily appear to be lost. To avoid accidental attempts, the classes are now frozen after construction. Signed-off-by: Tim Janik <timj@gnu.org> 2019-08-18 Tim Janik # 17972aa32de JSONIPC: head.js: allow 'arraybuffer' message handling via onbinary Signed-off-by: Tim Janik <timj@gnu.org> 2019-08-11 Tim Janik # 4d8efccff82 JSONIPC: jsonipc.hh: use getter/setter method to avoid 'async get' properties Signed-off-by: Tim Janik <timj@gnu.org> 2019-08-03 Tim Janik # 93ce0afdce8 JSONIPC: jsonipc.hh: add restrictions to IsWrappableClass<> to satisfy g++-7.4 Signed-off-by: Tim Janik <timj@gnu.org> 2019-07-31 Tim Janik # 56be3d0cda2 JSONIPC: head.js: add marshalling code for Javascript * perform object conversions recursively * add observe/unobserve to $jsonipc for notifications * wrap/unwrap call argument objects * auto-unwrap object ids in $jsonipc.send() Signed-off-by: Tim Janik <timj@gnu.org> 2019-07-26 Tim Janik # 0b12f774523 JSONIPC: Makefile: build testjsonipc Signed-off-by: Tim Janik <timj@gnu.org> 2019-07-26 Tim Janik # 35c84ecc386 JSONIPC: testjsonipc: add simple jsonipc test program Signed-off-by: Tim Janik <timj@gnu.org> 2019-07-26 Tim Janik # 58d4a7953e8 JSONIPC: jsonipc.hh: add binding to use C++ struct APIs via JSON messages Introduce Jsonipc, a header-only binding to use C++ struct APIs via JSON messages * generate data JS classes for Serializable * deprecate Class.copy() and Class.copyable() * introduce Serializable<> * introduce TypeInfo base class * use RTTI to wrap objects with their most derived Class<> * allow passing an allocator to CallbackInfo * add Scope to keep track of temporary objects * specialize Convert<> for std::vector derived types * register and use enum value strings * rearrange the ClassPrinter to deal with enum class exports. * move 'this' into JSON params * rename n_args() and ntharg() of CallbackInfo * find baseclass methods and upcast recursively * add .set(name,getter,setter) for properties * fix inheritance registration * pass RTTI classnames to Javascript * use '{"$id":<int>}' as object format * pass JsonAllocator& into all to_json() calls * throw method name on duplicate registration * implement enums via std::underlying_type<> * hide '$id' from enumeration and make it read-only * add setter support via member object pointer * add Class.copy() and Class.copyable() for copy ctors * add Class.eternal() for static class instances * implement object wrapping for shared_ptr * add getter support via member object pointer * generate Javascript module ouput * add IpcDispatcher.add_method() * simplify templates with REQUIRES<> * add header file for IPC via JSON messages Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-10 Tim Janik # 797cf8a05ea Merge branch 'externals' * externals: MISC: config-external.mk: provide websocketpp-0.8.2.tar.gz Download and provide websocketpp-0.8.2.tar.gz from https://github.com/zaphoyd/websocketpp/archive/0.8.2.tar.gz MISC: config-external.mk: provide rapidjson from git as of 13.10.2020 Download and provide rapidjson-v1.1.0.tar.gz plus recent updates from https://github.com/Tencent/rapidjson/. These Tencent/rapidjson.git updates clean up the code for different compilers in various places, fix several parsing bugs, add some minor performance improvements and API. Unfortunately there is no upstream release yet. Signed-off-by: Tim Janik <timj@gnu.org> 2020-12-26 Tim Janik # 3e6a652517b MISC: config-external.mk: provide websocketpp-0.8.2.tar.gz Download and provide websocketpp-0.8.2.tar.gz from https://github.com/zaphoyd/websocketpp/archive/0.8.2.tar.gz Signed-off-by: Tim Janik <timj@gnu.org> 2020-11-21 Tim Janik # 67894f17797 MISC: config-external.mk: provide rapidjson from git as of 13.10.2020 Download and provide rapidjson-v1.1.0.tar.gz plus recent updates from https://github.com/Tencent/rapidjson/. These Tencent/rapidjson.git updates clean up the code for different compilers in various places, fix several parsing bugs, add some minor performance improvements and API. Unfortunately there is no upstream release yet. Signed-off-by: Tim Janik <timj@gnu.org> 2021-02-10 Tim Janik # 298dd1a5af2 Merge branch 'build-setup' * build-setup: NEWS.md: start NEWS file .gitignore: add ignores Makefile.mk: add toplevel build rules GNUmakefile: make Makefile.mk the toplevel makefile MISC: config-utils.mk: add Makefile utilities for rule writing and printouts MISC: config-uname.mk: determine system requirements and CXX build setup MISC: config-checks.mk: check for third-party dependencies version.sh: extract version from git tag, archive ref or NEWS file Signed-off-by: Tim Janik <timj@gnu.org> 2020-11-16 Tim Janik # cc6ecc202bd NEWS.md: start NEWS file Signed-off-by: Tim Janik <timj@gnu.org> 2020-11-16 Tim Janik # 6ec2ca2050a .gitignore: add ignores Signed-off-by: Tim Janik <timj@gnu.org> 2020-11-16 Tim Janik # cf69e1b461d Makefile.mk: add toplevel build rules Signed-off-by: Tim Janik <timj@gnu.org> 2020-11-16 Tim Janik # 032e3077e51 GNUmakefile: make Makefile.mk the toplevel makefile Signed-off-by: Tim Janik <timj@gnu.org> 2020-11-16 Tim Janik # 9b81e2f1fbc MISC: config-utils.mk: add Makefile utilities for rule writing and printouts Signed-off-by: Tim Janik <timj@gnu.org> 2020-11-16 Tim Janik # 2cde8ea41e1 MISC: config-uname.mk: determine system requirements and CXX build setup Signed-off-by: Tim Janik <timj@gnu.org> 2020-11-16 Tim Janik # 30730914f67 MISC: config-checks.mk: check for third-party dependencies Signed-off-by: Tim Janik <timj@gnu.org> 2020-11-16 Tim Janik # 2c6389c08a6 version.sh: extract version from git tag, archive ref or NEWS file Signed-off-by: Tim Janik <timj@gnu.org> 2020-11-16 Tim Janik # 96e7881fac0 tag: v0.0.1-alpha0 Spark