Beast version 0.15.0 is released.
Beast is a Free Software (LGPLv2+) music synthesizer and audio composer.
It provides a #MIDI #sequencer, unlimited undo, real-time #synthesis,
support for Linux #Audio Plugins (#LADSPA), Soundfont 2/3, WAV, AIFF,
Vorbis, Gus Patch, FLAC and MP3 files, 32bit audio rendering, full
duplex support, multi-core audio rendering and SIMD utilisation.
The source code is available via Git, the tarball and AppImage are here:
https://beast.testbit.org/#downloads
After downloading and making the Beast AppImage executable, it can
run on any Ubuntu-18.04 or Fedora-28 compatible Linux system.
The new experimental ebeast UI can be started with:
./beast-0.15.0.x64.AppImage --ebeast
The release NEWS and shortlog are appended.
---- ## Beast 0.15.0: (2019-11-05) #### System Requirements * Linux - Ubuntu 18.04 or Fedora-28 are needed to run the Beast AppImage. #### User Interface EBEAST * Added Beast HTTP manual popup window. * Added scrollable track view. * Integrated material-icons and fork-awesome sprites. * Added popup menus, modal dialog and preferences. * Added proper command line argument handling to ebeast. * Tracks now have a context menu with various editing functions. * Support secondary UI via URL with auth-cookie. * Support UI rendering in Firefox 68. * Added song position pointer with realtime updates. * Added bpm and song position counter display with realtime updates. * Added focus handling for piano roll notes. * Started file system selector for instrument assignments. * Added user interface for manual PCM/MIDI driver selection. #### Synthesis Changes * Added support for separate fluidsynth instances per track. #102 [stw] * Rewrote PCM driver integration and selection. * Added optional PCM driver support for Jack. #128 [stw] #### Jsonipc * A dedicated Rapidjson based IPC layer was developed to move the synthesis engine out of the UI process (Electron based). This solved several major stability issues and also allowes use of Firefox for UI rendering. * Added Json based IPC layer between Javascript and C++17. * Moved Electron <-> Bse communication to Websocket-based IPC. * Moved BSE sound engine functionality into a separate executable BeastSoundEngine with async Javascript bindings. * Added a Websocket binary message bridge for realtime monitoring of shared memory region changes. #### Upgrades * Integrated Rapidjson 20190628 (> v1.1.0). * Upgraded to Electron 6.0.11 * Upgraded babel to 7.6.2. * Upgraded node-sass to 4.12. * Managed to eliminate jQuery dependency. * Depend on fluidsynth to 2.0.5. #108 [stw] * The v8pp binding was superceeded by Jsonipc. * Depend on pandoc >= 2. * Depend on clang++-6 and g++-8.3.0 for full C++17 support. * Updated CI builds to use Fedora-28. #### Other Changes * Modernized several property implementations. [stw] #109 #110 #112 #114 #115 #116 #117 #118 * Rewrote Vue data dependency integration for async Javascript calls. * Several code areas got modernized, making use of C++ >= 11. * Support proper versioning information even from Github ZIP files. * Added PDF generation for the BSE API reference manual. * Resampler cleanups. #121 [stw] * Added new XML serialzation infrastructure (defaults to OFF, MVP roadmap goal). * Added ZIP storage for BSE files (defaults to OFF, MVP roadmap goal). * Added infrastructure for stereo device/effect chains (still disabled, MVP roadmap goal). Stefan Westerfeld (86): BSE: Jack: some minor fixes as requested in review BSE: Jack: add list with possible improvements from PR#31. BSE: Driver: return read and write latency for a pcm driver separately BSE: bsemain.cc: block SIGPIPE to avoid crashes when jackd dies DOCS: add minimal jack howto BSE: Jack: initial version of Jack driver using the new driver API BUILD: require jack BSE: Resampler2: fix compilation with clang config-uname.mk: fix x86_64 specific build flags BSE: Resampler2: mark impl classes as final TESTS: testresampler: improve accuracy test coverage as slow test TESTS: testresampler: make perf test more reliable for small block sizes TESTS: testresampler: re-enable standalone tests via suite1 TESTS: testresampler: use AlignedArray instead of F4Vector for alignment TESTS: adapt Resampler2 tests (namespace, enums) BSE: Resampler2: namespace/enum cleanups BSE: Resampler2: merge bseresamplerimpl.hh into bseresampler.cc TESTS: testresampler: avoid including bse/bseresamplerimpl.hh BSE: Resampler2: remove Resampler2::create TESTS: get rid of Resampler2::create BSE: Resampler2: improve C++ API to get rid of Resampler2::create BSE: Resampler2: small performance optimization for downsampler TOOLS: bsewavetool: remove unused resampler include TESTS: testresampler: re-enable tests for both: SSE and FPU Resampler TESTS: resamplehandle: test both: SSE/FPU version for delay compensation TESTS: testresamplerq: re-enable SSE tests (and still do FPU tests) BSE: Resampler2: properly support SSE again TESTS: no longer rely on block utils to create Resampler2 implementation BSE: no longer rely on block utils to create Resampler2 implementation TESTS: resamplehandle: remove Resampler C API test BSE: Resampler: remove C API BSE: Part::n_channels: port property to C++ BEAST-GTK: use Part::last_tick C++ property BSE: Part::last_tick: port property to C++ BSE: add Resampler2 function to reset state BEAST-GTK: bstapp: use Server::wave_file C++ property BSE: Server::wave_file: port property to C++ BEAST-GTK: bstusermessage: use Server::log_messages C++ property BSE: Server::log_messages: port property to C++ BSE: Super: remove copyright property BSE: Super: port author/license properties to C++ BSE: bseitem: allow APPLY_IDL_PROPERTY for Strings and other types BEAST-GTK: bsttreestores: use seqid C++ property BSE: Item::seqid: port property to C++ BEAST-GTK: use Project::dirty C++ property BSE: Project::dirty: port property to C++ BEAST-GTK: bstcanvassource.cc: use Source pos_x/pos_y C++ property BSE: Source::pos_x/pos_y: port properties to C++ BSE: MidiSynth: store volume_factor in impl class BSE: MidiSynth::volume_perc: port property to C++ BSE: MidiSynth::volume_dB: port property to C++ BSE: MidiSynth::volume_f: port property to C++ BSE: MidiSynth::n_voices: port property to C++ BSE: MidiSynth::midi_channel: port property to C++ BSE: PcmOutput: properly update volume for engine module BSE: Song: fix access to C++ Track::muted property BEAST-GTK: bsttrackview: port track view notifications for C++ properties BEAST-GTK: bsttrackview: use n_voices C++ property BSE: Track::n_voices: port property to C++ BEAST-GTK: bsttrackview: use midi_channel C++ property BSE: Track::midi_channel: port property to C++ BEAST-GTK: bsttrackview: use muted C++ property BSE: Track::muted: port property to C++ BSE: SF2: use fluid_synth_process() instead of deprecated function config-checks.mk: require the latest fluidsynth version, 2.0.5 BEAST-GTK: bstbuseditor: refactor aida property / pspec code BSE: Song: port remaining Bus::master-output set calls BSE: Bus::master_output: port property to C++ BEAST-GTK: bstbuseditor: use right_volume C++ property BSE: Bus::right_volume: port property to C++ BEAST-GTK: bstbuseditor: use left_volume C++ property BSE: Bus::left_volume: port property to C++ BSE: Bus::sync: port property to C++ BSE: Bus::solo: port property to C++ BEAST-GTK: bstbuseditor: support both, aida and old style properties BSE: Bus::mute: port property to C++ BSE: SF2: avoid global using std::string BSE: SF2: disable automated locks that protect all fluid synth API calls BSE: SF2: cleanup sound sont repo code BSE: SF2: don't reload the soundfont every time the user presses play BSE: SF2: update documentation block. BSE: SF2: cleanup: fix leak, remove debugging output BSE: SF2: use module data free function BSE: SF2: remove unused mutex BSE: SF2: clean up old unused code BSE: SF2: use one fluid_synth_t per track Tim Janik (622): NEWS.md: update NEWS for 0.15 PO: updates for 'make dist' MISC: Makefile.mk: release-commits: check for master branch BSE: bseproject.cc: require BSE_FEATURE=xml-project for ZIP bse files BSE: bcore: add feature_check() for $BSE_FEATURE to toggle features BSE: bseproject.cc: xml_serialize() child tracks BSE: bsetrack: xml_serialize() child devices BSE: device: xml_serialize() the device type and child modules BSE: module: xml_serialize() the module type EBEAST: provide 'EQ' shorthand to compare objects EBEAST: b/deviceeditor.vue: show module id EBEAST: b/devicepanel.vue: show device id EBEAST: b/track-view.vue: update the current track on clicks EBEAST: b/projectshell.vue: add todo about treechange changes BSE: object.hh: whitespace fixups BSE: bsesong.hh: add SongImplP EBEAST: utilities.js: equals_recursively: compare OwnProperties and prototype BSE: object, bseobject: move xml_serialize, xml_reflink to ObjectImpl BSE: bseproject: add xml_serialize() and xml_reflink() BSE: bseproject: store project.xml in bse files via SerializableInterface BSE: bseobject: implement xml_serialize(), xml_reflink() BSE: serializable.hh: add Bse::SerializableInterface, Bse::SerializationNode BSE: bseproject: use zip_storage per-project and fix multi-imports BSE: bseproject.cc: load SCM files from ZIP vis Bse::Storage BSE: bseproject.cc: save .bse files as ZIP BSE: beast-sound-engine.hh: remove special casing for non-ObjectIface roots BSE: split BeastSoundEngine into 5 compilation units to speed up -j builds config-uname.mk: allow *.o compilation from generated *.c or *.cc AIDACC: JsonipcStub.py: allow -G nblocks=<int> to split output into sections EBEAST: b/deviceeditor.vue: add component with module list BSE: implement module listing and creation EBEAST: b/devicepanel.vue: show a device panel for the current track EBEAST: b/projectshell.vue: keep track of the `current_track` BSE: implement device listing and creation BSE: bseapi.idl: add Track API stubs for Device creation BSE: bseapi.idl: add Device API stubs for Module creation BSE: add interface Device stub BSE: add interface Module stub BSE: beast-sound-engine.cc: use FOREACH_IFACE_SEQ() to work around handle seq AIDACC: CxxStub.py: generate a *_FOREACH_IFACE_SEQ() macro BSE: bseapi.idl: derive interface DeviceCrawler from Object BSE: move properties and event emission from LegacyObject to Object BSE: introduce 'interface Object' as base for 'interface LegacyObject' BSE: introduce 'interface Object' as pure C++ base type BSE: rename 'interface Object' to 'interface LegacyObject' EBEAST: b/track-view.vue: implement 'delete-track' EBEAST: b/track-view.vue: implement 'add-track' BSE: bseapi.idl: implement Song.list_tracks() BSE: bseapi.idl: default to 1 voice per track, limit to 64 BEAST-GTK: bstfiledialog.cc: pass project into store_bse() BSE: bseapi.idl: derive ContextMerger from Container EBEAST: b/projectshell.vue: use v-show for panel2 items EBEAST: b/projectshell.vue: make room for an alternative panel on 'Backquote' EBEAST: b/treeselector-item.vue: adjust arrow key matching EBEAST: utilities.js: add remove_hotkey/add_hotkey EBEAST: utilities.js: add keyboard_map_name() EBEAST: use KeyboardEvent.code to match hotkeys outside of INPUT fields MISC: Dockerfile-yum: provide unzip, required to unpack 3rd party libs BSE: path.cc: purify code to avoid g++-8 warnings MISC: Dockerfile-cibuild: provide unzip, required to unpack 3rd party libs BSE: serializable.hh: fix macro guards JSONIPC: jsonipc.hh: always use `static inline` except where ODR applies JSONIPC: jsonipc.hh: avoid linker emission of static class variables BSE: bseapi.idl: fix Const and comment placements BSE: beast-sound-engine.cc: fix unintended fallthrough for json numbers in Any BEAST-GTK: bstfiledialog.cc: fix NULL object reference EBEAST: menus.js: fix error constant checks against promise EBEAST: b/projectshell.vue: show error dialog if open fails TOOLS: magictest.cc: remove test magic for .bse file types TOOLS: bsetool.cc: support -h and --help BSE: storage: add has_file() and move_to_temporary() BSE: path: add Path::split_extension() BSE: storage: use FileMagic to identify ZIP/SCM files BSE: storage.cc: implemenmt import_from() BSE: storage: add API to read files from container BSE: storage.cc: implement export_as() BSE: storage: add API to store files in container BSE: bsestorage.cc: shorten temporary storage-blob filename BSE: bsestorage: use beastbse_cachedir_current() for temporary files EBEAST: app.html: after startup, purge_stale_cachedirs() BEAST-GTK: bstmain.cc: at startup, purge_stale_cachedirs() BSE: bseapi.idl: add Server.purge_stale_cachedirs() BSE: bsestorage: add beastbse_cachedir_current() BSE: bsemain.cc: limit after-quit event loop processing BSE: beast-sound-engine.cc: correctly stop server and websocket connections BSE: beast-sound-engine.cc: keep track of opened websocket connections BSE: storage: add beastbse_cachedir_create() and beastbse_cachedir_cleanup() BSE: sfistore: remove unused functions BSE: minizip: integrate ZIP functionality from minizip-2.9.0 BSE: Makefile.mk: fetch ZIP sources from minizip-2.9.0 BSE: integrity.cc: sort integrity tests by function name config-uname.mk: MODE=debug: add -gdwarf-4 for variable tracking BSE: remove now unused serialize.cc, serialize.hh TESTS: checkserialize.cc: move to testing Xms::SerializableInterface BSE: bsemain.cc: parse and store bserc.xml via Xms::SerializableInterface BSE: serializable: add Xms::SerializableInterface, Xms::SerializationNode BSE: bseapi.idl: renumber Bse::Error DOCS: Makefile.mk: build doc/bse-api.pdf with doxygen and latex DOCS: refman.patch: fix font, sizing, vertical spacing, link colors, page numbering DOCS: doxygen.cfg: customize for latex & PDF generation DOCS: extrastyles.css: fix member list table formatting BSE: cxxaux.hh: remove bogus docu group AIDACC: CxxStub.py: add DOXYGEN infos about interface <- Iface <- Impl BSE: magic: rename from gslmagic.* BSE: port Magic matching to modern C++ TOOLS: magictest.cc: print Bse::FileMagic matches and find .bse files BSE: bseloader.cc: register magic specs as Bse::FileMagic BSE: gslmagic: add Bse::FileMagic implementation in C++ BSE: path: support maxlen for stringread() and memread() EBEAST: app.html: provide console inside Vue component handlers EBEAST: main.js: provide webContents with printout() and printerr() EBEAST: app.html: allow UI script before loading command line files EBEAST: b/fed-object.vue: allow CSS styling by field name EBEAST: support --norc -p <driver> and -m <driver> command line args Makefile.mk: help: mention config-defaults.mk for CXXFLAGS EBEAST: package.json.in: upgrade electron to 6.0.11 EBEAST: package.json.in: upgrade babel to 7.6.2 EBEAST: remove jQuery (now unused) EBEAST: package.json.in: upgrade node-sass to 4.12 EBEAST: window.html: remove unused file EBEAST: b/preferencesdialog.vue: speed up feedback for invalid/locked settings BSE: bsemain.cc: fix stale config values and refuse to change locked config EBEAST: b/playcontrols.vue: use "Space" to toggle playback and 'S' for stop EBEAST: b/modaldialog.vue: use hflex for header and footer EBEAST: b/contextmenu.vue: support tieclass, to a tie a class during popup EBEAST: utilities.js: add clear_keyboard_click() EBEAST: b/flex.vue: turn hflex and vflex into functional components EBEAST: b/fed-picklist.vue: fix focus flicker for clicks on inactive elements EBEAST: utilities.js: add is_nav_input() and refine arrow key focus EBEAST: automatically support buttons clicks though a data-hotkey attribute EBEAST: b/button.vue: turn b-button into a functional component EBEAST: b/hotkeys.js: remove jQuery based hotkey handling EBEAST: utilities.js: move navigation_keys to inner scope EBEAST: utilities.js: fix focus handling at startup without last_focus set EBEAST: utilities.js: add LINEFEED as KeyCode EBEAST: utilities.js: add join_classes() helper EBEAST: b/treeselector.vue: remove unused table styling EBEAST: b/aboutdialog.vue: use grid for layout EBEAST: b/piano-roll.vue: fix keydown handler on b-flex EBEAST: variables.scss: reduce font size to align with other desktop apps EBEAST: b/fed-object.vue: use b-grid for field layout EBEAST: b/grid.vue: add functional component for `display: grid` elements BEAST-GTK: bstmain.cc: document '-p' and '-m' only briefly BSE: bsemain.cc: support '-p' and '-m' for default driver selection EBEAST: b/preferencesdialog.vue: remove menu test code EBEAST: utilities.js: prevent Up/Down focus changes from also scrolling EBEAST: b/contextmenu.vue: fix menuitem checks within functional components EBEAST: Util.ResizeObserver: simplify FallbackResizeObserver EBEAST: b/contextmenu.vue: fix re-positioning loops EBEAST: b/preferencesdialog.vue: rmeove unused mixin EBEAST: b/aboutdialog.vue: show dialog via v-model EBEAST: use secondary/warning/notice colors for picklist details BSE: driver-alsa.cc: give a Note about PulseAudio, rather than a Warning EBEAST: b/preferencesdialog.vue: provide notice / warning colorizations EBEAST: b/fed-picklist.vue: support icon/label/line CSS classes EBEAST: b/menuitem.vue: support iconclass property EBEAST: b/icon.vue: support iconclass property EBEAST: b/flex.vue: simplify classlist handling BSE: driver.cc: PCM Null: warn about lack of playback timing EBEAST: b/contextmenu.vue: avoid repeated resize_observer iterations EBEAST: b/contextmenu.vue: use dom_update, dom_destroy EBEAST: app.html: always add vue_mixins.dom_updates and vue_mixins.data_tmpl EBEAST: b/mixins.scss: rename from styles.scss EBEAST: cssaux.scss: move and turn into a helper for variables.scss EBEAST: b/flex.vue: turn b-hflex, b-vflex into slim functional components EBEAST: b/bundle.js: allow *.vue files without module.exports component EBEAST: b/fed-picklist.vue: support menu popup via 'click' and 'mousedown' EBEAST: b/contextmenu.vue: support drag-selection on 'mousedown' popups EBEAST: b/fed-picklist.vue: remove <label/> and <input/> form elements EBEAST: utilities.js: swallow_event: fix event type EBEAST: b/projectshell.vue: use v-model to adjust show_preferences_dialog EBEAST: b/preferencesdialog.vue: forward v-model and reload on popup EBEAST: b/modaldialog.vue: fix modal shield, use v-model for popup flag EBEAST: b/fed-picklist.vue: popup on mousedown and fix styles EBEAST: b/contextmenu.vue: fix modal shield and positioning, add transitions EBEAST: b/color-picker.vue: fix modal shield and positioning, add transitions EBEAST: utilities.js: change modal_shield() to reparent and allow styling EBEAST: b/fed-text.vue: use b-style-inset like number inputs EBEAST: variables.scss: add b-style-modal-overlay for overlay backgrounds EBEAST: b/color-picker.vue: use style/template/script order EBEAST: utilities.js: fix focus stacking and display==none check EBEAST: b/preferencesdialog.vue: create picklistitems from PCM/MIDI drivers EBEAST: b/fed-object.vue: use b-picklist for fields with .picklistitems EBEAST: b/fed-picklist.vue: add b-picklist component EBEAST: b/fed-object.vue: add support for __fieldhooks__ metadata EBEAST: b/fed-number.vue: utilize b-style-number-input and b-style-hrange-input EBEAST: Makefile.mk: provide spinners.svg for b-style-number-input EBEAST: variables.scss: add b-style-number-input EBEAST: variables.scss: add b-style-light-foreground EBEAST: variables.scss: add b-style-hrange-input mixin EBEAST: variables.scss: add b-style-inset and b-style-outset mixins EBEAST: variables.scss: provide b-style-focus-color and b-style-border-radius EBEAST: variables.scss: slightly darken the main background EBEAST: b/contextmenu.vue: rename .popup() and fix positioning EBEAST: b/modaldialog.vue: avoid double destroy calls BSE: driver-alsa.cc: scrap redundant device info BSE: add pcm_driver and midi_driver to 'record Configuration' EBEAST: utilities.js: vue_observable_from_getters: de-dup equal results EBEAST: utilities.js: equals_recursively: require equal for..in order EBEAST: utilities.js: guard ModalShield against double-destroy BSE: driver-alsa.cc: fill audio buffer by writing exact period sizes EBEAST: b/preferencesdialog.vue: add driver selection menu EBEAST: b/menuitem.vue: forward the `ic` property to b-icon EBEAST: b/icon.vue: support prefixed icons via the `ic` property MISC: Dockerfile-cibuild: build CI and AppImage against libjack-dev 0.125 BSE: add major.minor.micro to BeastSoundEngine BSE: Makefile.mk: conditionally compile libbse-jack-x.y.z.so config-checks.mk: check if jack.pc >= 0.124.0 is present BSE: driver.cc: be silent about libbse-jack loading errors BSE: driver.cc: add libbse-jack-x.y.z.so loader code BSE: bsemain: add register_driver_loader() and load-drivers option BSE: driver-jack.cc: assign device_name, capabilities, device_info, notice BSE: driver-alsa.cc: adjust capabilities listing BSE: bseapi.idl: add to DriverEntry: device_name, capabilities, device_info, modem BSE: driver-jack.cc: improve device description strings BSE: driver: use DriverEntry and DriverEntrySeq BSE: bseapi.idl: add list_pcm_drivers / list_midi_drivers BSE: driver-jack.cc: remove duplicate debug prefix BSE: driver-alsa.cc: fix buffer for pcm writes during retrigger, fixes #127 BSE: driver: add driver name to devid entries BSE: bseserver.cc: fallback to "null" MIDI driver if no MIDI device is present BSE: strings: add kvpair_key() and kvpair_value() TESTS: basics.cc: rename file (from aida-basics.cc) TESTS: suite1-main.cc: NEVER inline prototypes, ALWAYS use a header file! TESTS: use 'null' PCM driver without arguments BSE: driver: add 'null' PCM and 'null' MIDI driver BSE: bsedevice*: remove unused source files BSE: support "auto" driver selection for PCM and MIDI BSE: Makefile.mk: stop compiling old device code BSE: bsemain.cc: stop listing old devices BSE: remove unused MIDI device code BSE: remove old OSS device code DRIVERS: remove old MIDI device code BSE: bseserver: use the new MIDI Driver BSE: driver-alsa.cc: implement AlsaMidiDriver BSE: bsemain.cc: print MIDI driver list BSE: driver-alsa.cc: prefix all PCM related functions BSE: driver-alsa.cc: use "alsa" as debug key BSE: driver: add MidiDriver base type for MIDI drivers to derive from BSE: introduce PcmDriver base type for PCM drivers to derive from DRIVERS: remove old PCM device code BSE: bseserver, bsepcmmodule: use the new PCM Driver BSE: driver: fix open(), add pcm_frequency() BSE: bseserver.hh: reformat bse_server_*() decls BSE: driver: rename config.block_length BSE: driver: add pcm_read and pcm_write BSE: driver-alsa.cc: reduce init code BSE: driver: add pcm_latency() BSE: driver: add pcm_check_io() BSE: driver: add pcm_retrigger() BSE: driver-alsa.cc: implement open/close BSE: driver: add DriverConfig, ctor, dtor BSE: Makefile.mk: compile ALSA driver and link against -lasound BSE: driver-alsa.cc: start ALSA driver, list available PCM drivers BSE: bsemain.cc: print PCM driver list BSE: driver: start new Bse::Driver infractructure MISC: Dockerfile-yum: install missing `patch` utility EBEAST: b/preferencesdialog.vue: move to await and observable_from_getters() EBEAST: b/fed-object.vue: implement reactivity with observable_from_getters() EBEAST: utilities.js: properly filter display:none elements in list_focusables EBEAST: Makefile.mk: fix *.vue line numbers in vueify/lib/compiler.js BSE: bseapi.idl: provide Object.find_typedata() AIDACC: CxxStub.py: avoid useless __typedata__ vector copy AIDACC: aida.cc: guard against missing auxentries EBEAST: utilities.js: avoid UP/DOWN focus movement for stepUp/stepDown elements JSONIPC: jsonipc.hh: add __typename__ to Serializable .travis.yml: upgrade builds to Fedora-28, which has g++-8 MISC: Dockerfile-cibuild: install and switch to g++-8 before compiling BSE: devicecrawler.cc: remove g++ 7.4.0 experimental/filesystem workaround JSONIPC: jsonipc.hh: fix g++-8 missing-prototype warning by inlining BSE: bsetype.hh: fix g++-8 parentheses warning BSE: bseserver.cc: fix g++-8 signedness complaints BEAST-GTK: gxk/gxkglobals.hh: ignore -Wparentheses in Gtk+ headers AIDACC: CxxStub.py: remove __accept__() generation, use __visit__() BSE: sfivisitors.hh: use __visit__() (not __accept__) AIDACC: visitor.hh: use __visit__ instead of __accept__ AIDACC: replace Has__accept__<>() with Has___visit__<>() AIDACC: aida.cc: silence g++-8 unused-variable warning config-uname.mk: introduce a hard dependency on g++ >= 8.3.0 Makefile.mk: default to 'production' if MODE is unspecified BUILD: rename optimized build mode, use: make default MODE=production EBEAST: b/projectshell.vue: integrate positionview EBEAST: add positionview to display time, signature, bars and beats EBEAST: utilities.js: add strpad() EBEAST: b/part-thumb.vue: add slight shading to distinguish parts EBEAST: Makefile.mk: Upgrade font to Inter-3.10 EBEAST: b/treeselector-item.vue: add left/right focus movement EBEAST: b/treeselector.vue: pick up device crawler data in create_data() EBEAST: b/projectshell.vue: scroll sidebar BSE: add devicecrawler.*, implenment interface DeviceCrawler AIDACC: Parser.g: allow 'type' as field name EBEAST: b/treeselector-item.vue: use smaller open/filled arrows for expand EBEAST: b/treeselector.vue: keep focus handling inside container EBEAST: b/projectshell.vue: add padding to sidebar EBEAST: b/projectshell.vue: add handle to resize sidebar EBEAST: variables.scss: add resize handle values EBEAST: b/piano-roll.vue: use flex containers, optimize scrollarea EBEAST: b/projectshell.vue: use flex containers EBEAST: b/track-list.vue: use flex containers EBEAST: b/flex.vue: use numeric grow<n> and shrink<n> properties EBEAST: app.html: expand root element and constrain minimum size EBEAST: app.scss: add .hflex .vflex .grow0 .grow* .shrink0 .shrink* classes EBEAST: b/contextmenu.vue: cleanup resize_observer via destroy() EBEAST: utilities.js: fix resize_observer() bookkeeping EBEAST: use consistent license headings EBEAST: b/projectshell.vue: add tree selector to right sidebar EBEAST: b/treeselector.vue: add b-treeselector, use b-treeselector-item EBEAST: b/treeselector-item.vue: add a b-treeselector-item BSE: bseserver.cc: acocunt for *aligned* sizes in allocator assertion BSE: bsetrack: emit "changed" on "notify:last_tick" of any linked part BSE: bseobject.cc: emit notify:icon on icon changes BSE: bseapi-inserts.hh: on(): use ObjectImpl->__attach__() for connecting BSE: bsedevice.cc: support BSE_DEBUG=snd to debug sound device opening BSE: sfistore: fix seek error for files with binary appendix EBEAST: b/piano-roll.vue:focus note on click and with arrow keys EBEAST: b/piano-roll.vue: span 11 octaves, like other DAWs EBEAST: b/piano-roll.vue: allow focus, draw focus note and freeze pnotes EBEAST: b/projectshell.vue: add padding for focus-outline EBEAST: b/styles.scss: add focus-outline-width and note-focus-color EBEAST: utilities.js: add promise_state() EBEAST: utilities.js: export in_array() EBEAST: app.html: set `inheritAttrs: false` for all Vue components JSONIPC: jsonipc.hh: freeze JS classes after initialization EBEAST: jsbse.js: provide an empty Bse.server during async initialization TESTS: audio/Makefile.mk: lower sum-diff-test threshold to avoid CI trip-ups BSE: randomhash.hh: remove fnv1a_consthash64(std::string) variant EBEAST: b/part-thumb.vue: freeze immutable allnotes, no need to observe EBEAST: utilities.js: resize_canvas: return the devicepixelratio EBEAST: b/piano-roll.vue: swap <style/> and <template/> sections EBEAST: b/piano-roll.vue: move to await and observable_from_getters() BSE: bsepart.cc: emit notify:last_tick, noteschanged, linkschanged events EBEAST: b/part-thumb.vue: move to observable_from_getters() EBEAST: vue_observable_from_getters(): gracefully handle missing getter EBEAST: b/track-view.vue: use dom_animate_playback() EBEAST: b/track-list.vue: use dom_animate_playback() EBEAST: utilities.js: add dom_animate_playback() to vue_mixins.dom_updates EBEAST: vue_observable_from_getters: only call getter if !!predicate EBEAST: b/track-list.vue: use Vue.observable_from_getters() for Bse.Song EBEAST: utilities.js: re-add async-warning for dom_update EBEAST: b/track-list.vue: remove unused attr EBEAST: b/track-view.vue: use Vue.observable_from_getters() for Bse.Track EBEAST: provide Vue.observable_from_getters() for async getters with signals EBEAST: return `disconnect()` function from Bse.ObjectIface.on() EBEAST: b/track-view.vue: use explicit setup/cleanup code for async track API EBEAST: b/track-list.vue: properly handle await queries and cleanups EBEAST: utilities.js: add support for `priv_tmpl` to vue_mixins.data_tmpl EBEAST: utilities.js: add copy_recursively() for Arrays and simple Objects EBEAST: utilities.js: add equals_recursively() EBEAST: utilities.js: add discard_remote() stub EBEAST: utilities.js: track this.dom_update() calls reactively EBEAST: utilities.js: work around Firefox lacking setImmediate() EBEAST: utilities.js: batch shm_reschedule() requests during the same tick EBEAST: utilities.js: cleanup ShmFragmentSeq for broadcast_shm_fragments() EBEAST: utilities.js: fix missing initial call_frame_handlers() EBEAST: b/part-thumb.vue: optimize redraws via batch-await before updating EBEAST: b/part-thumb.vue: fix vertical note orientation EBEAST: b/part-thumb.vue: properly scale font-size and note thickness EBEAST: b/part-thumb.vue: adjust canvas size to match hardware pixels EBEAST: b/part-thumb.vue: use await for part.get_last_tick() EBEAST: adjust part thumbnail colors and style EBEAST: b/track-list.vue: fix tick position subscription setup EBEAST: b/track-list.vue: avoid tick pointer layout being cut-off EBEAST: b/track-list.vue: add song position pointer, synced to Song EBEAST: utilities.js: fix shm_unsubscribe() EBEAST: utilities.js: remove old array_fields_* code EBEAST: eliminate shm_id handling BEAST-GTK: eliminate shm_id BSE: eliminate shm_id, only one shared memory area is supported by Bse.server EBEAST: b/track-view.vue: remove old Util.array_fields_* handling BSE: add Song.get_shm_offset and SongTelemetry to monitor tick pointer BSE: beast-sound-engine.cc: add debug code for extended binary watching EBEAST: b/track-view.vue: use Bse.MonitorField enum values instead of constants BEAST-GTK: fix Bse.SignalMonitor.get_shm_offset() calls BSE: add probe field to Bse.SignalMonitor.get_shm_offset() BSE: bseapi.idl: fix SignalMonitor documentation EBEAST: b/track-view.vue: use dom_updates to manage frame_handler lifetime EBEAST: use new vue_mixins.dom_updates with dom_create, dom_update, dom_destroy EBEAST: jsbse.js: handle $jsonipc.onbinary via Util.shm_receive() EBEAST: utilities.js: exports shm_{un}subscribe() and shm_array_<type> EBEAST: b/track-view.vue: use Util.shm_subscribe() for dB-meter updates JSONIPC: head.js: allow 'arraybuffer' message handling via onbinary EBEAST: main.js: pass --binary along to BeastSoundEngine BSE: beast-sound-engine.cc: implement Bse::IpcHandler for binary messages BSE: beast-sound-engine.cc: print 404 errors unconditionally BSE: add Server.broadcast_shm_fragments() to get binary shm updates BSE: bseglobals: add exec_handler_clear() to remove timers BSE: randomhash.hh: add fnv1a_consthash64() for std::string and arbitrary lengths BSE: cxxaux.hh: add constexpr_equals() EBEAST: utilities.js: use await in frame handler updates EBEAST: b/projectshell.vue: auto-"load" the *last* project on startup BSE: beast-sound-engine.cc: clean up event handlers on stale connections BSE: bseapi.idl: add Bse.server.last_project() EBEAST: menus.js: allow BrowserWindow local menus EBEAST: menus.js: load beast-manual through http requests EBEAST: Makefile.mk: include doc/ via app/doc/ symlink BSE: beast-sound-engine.cc: permit http file requests for app/ and doc/ BSE: beast-sound-engine.cc: add image mime types EBEAST: b/track-view.vue: fix text input positioning buglet in gecko EBEAST: app.html: support [chrome] and [gecko] selectors for <html/> EBEAST: b/contextmenu.vue: use Util.resize_observer() EBEAST: use the same defaults for <html/> and BrowserWindowDefaults EBEAST: authenticate subprotocol via URL query string EBEAST: app.html: provide MAINCONFIG.args default BSE: beast-sound-engine.cc: authenticate subprotocol via URL query string EBEAST: b/track-view.vue: fix midi_channel assignemnt JSONIPC: jsonipc.hh: use getter/setter method to avoid 'async get' properties EBEAST: main.js: add TODO about closing manual window EBEAST: package.json.in: upgrade to latest Electron stable version, 6.0.1 EBEAST: package.json.in: update minimum vue, jquery and eslint versions EBEAST: package.json.in: update babel/chrome target to 66 EBEAST: b/projectshell.vue: ensure a song has a connected Master track EBEAST: b/track-view.vue: assign midi_channel via menu and disable items EBEAST: b/contextmenu.vue: add 'check' callback to open() to disable items EBEAST: b/menuitem.vue: allow menudata.checkedroles to override disabled EBEAST: b/track-view.vue: add example menu for track editing EBEAST: b/track-view.vue: use text input to edit track names EBEAST: b/projectshell.vue: ensure projects have a song with master bus BSE: bsestorage.cc: scanner_parse_paren_rest() can only read whole files BSE: sfistore: allow only whole file reads via open() or input_text() BEAST-GTK: use sfi_rstore_new_open() instead of file descriptor feeding EXTERNAL: v8pp: remove (now unused) v8pp/ project EBEAST: remove v8bse code and buildrules BSE: bseitem.cc: remove unused bse_item_{get|set}_property_internal() BSE: beast-sound-engine.cc: properly bind Aida::Event as AnyRec BSE: beast-sound-engine.cc: convert between Any and C++ classes AIDACC: JsonipcStub.py: register Aida::ImplicitBase as parent for base classes BSE: beast-sound-engine.cc: implement Convert<Any> for most types MISC: bintray.sh: add scriptname prefix .travis.yml: do not provide .bintray_api_key for pull requests MISC: Makefile.mk: require .bintray_api_key for uploads MISC: bintray.sh: add --skip to exit gracefully if API key is missing MISC: Dockerfile-yum: upgrade dependencies MISC: Makefile.mk: build beast AppImage in out/ MISC: cibuild.sh: use timjanik/beast:cibase-190807-bionic as CI base image MISC: Dockerfile-bionic: upgrade dependenccies and optimize image EBEAST: app.html: load command line files EBEAST: app.html: allow async menu initialisation EBEAST: menus.js: handle async functions with await BSE: beast-sound-engine.cc: randomize subprotocol for true authentication EBEAST: jsbse.js: derive ws:// from current host + port EBEAST: app.html: setup window.MAINCONFIG EBEAST: main.js: force non-0 exit status for SIGINT, SIGHUP, SIGTERM EBEAST: main.js: spawn BeastSoundEngine --embed and add clean shutdown BSE: beast-sound-engine.cc: allow embedding via control pipe EBEAST: menus.js: use Electron.app.exit() b/c Electron abuses quit() for signals EBEAST: b/projectshell.vue: move b-aboutdialog and b-preferencesdialog here EBEAST: menus.js: use 'export' statement for Browser modules EBEAST: main.js: rename global CONFIG, load app.html EBEAST: app.html: rename CONFIG, add DevTools key, load menus for Electron EBEAST: Makefile.mk: circumvent eslint bug, rename global CONFIG EBEAST: using CONFIG constants EBEAST: b/aboutdialog.vue: use CONFIG and make nodejs info optional EBEAST: b/icon.vue: fix vertical alignment EBEAST: app.html: fix jQuery, install GLOBALCONFIG and show b-projectshell BSE: beast-sound-engine: colorize error replies EBEAST: provide fallback ResizeObserver, based on window.onresize EBEAST: utilities.js: for now, provide shm dummy EBEAST: jsbse.js: add await to (unused) test code EBEAST: b/track-view.vue: handle async functions with await EBEAST: b/part-thumb.vue: handle async functions with await EBEAST: b/part-list.vue: handle async functions with await BSE: beast-sound-engine: manually convert Aida::RemoteMember<Bse::PartHandle> AIDACC: JsonipcStub.py: use Jsonipc::Serializable<> BSE: beast-sound-engine: use Jsonipc::ClassPrinter::recording() for --js-bseapi EBEAST: b/track-view.vue: use await fro track method calls EBEAST: b/track-list.vue: use await when listing tracks BSE: beast-sound-engine: fix CallbackInfo references BSE: bseserver: print BSE:UserMessage to stderr for minimal handling AIDACC: JsonipcStub.py: use .serializable() for records EBEAST: b/projectshell.vue: fix missing title updates EBEAST: jsbse.js: add on() and off() to Bse.ObjectIface BSE: beast-sound-engine: handle Bse/EventHub/connect & disconnect EBEAST: b/track-list.vue: use await to query track lists EBEAST: b/projectshell.vue: use await for BSE methods EBEAST: .eslintrc.js: fix missing $log symbol BSE: beast-sound-engine: load BSE assets BSE: beast-sound-engine: manually convert Handle sequence into shared_ptr vectors EBEAST: app.html: re-activate b-projectshell BSE: beast-sound-engine: use Jsonipc::ClassPrinter::to_string() AIDACC: JsonipcStub.py: register enum values AIDACC: JsonipcStub.py: generate binding calls for Jsonipc BSE: beast-sound-engine: call Bse_jsonipc_stub() from bseapi_jsonipc.cc BSE: Makefile.mk: generate bseapi_jsonipc.cc with JsonipcStub.py EBEAST: generate bseapi_jsonipc.js, using jsonipc/head.js EBEAST: jsbse.js: properly pass object ids EBEAST: jsbse.js: re-define Bse.server.$id for initialization EBEAST: b/bundle.js, jsbse.js: move and disable failing tests EBEAST: jsbse.js: add JSON ipc marshalling code for BSE EBEAST: Makefile.mk: generate js_bseapi.js with BeastSoundEngine EBEAST: app.html: rewrite application startpoint EBEAST: utilities.js: turn into a javascript module, using "export" EBEAST: utilities.js: move utilities.js here Makefile.mk: distversion: fix use before assignment BSE: beast-sound-engine: send Bse.serevr on $jsonipc.initialize BSE: beast-sound-engine: fix missing allocator in to_json() BSE: beast-sound-engine: bind Bse::ServerIface, for which we have a wrapper BSE: beast-sound-engine: add '--js-bseapi' to print out the BSE Javascript glue BSE: beast-sound-engine: redirect to app.html BSE: beast-sound-engine: serve HTTP requests for ondisk files from app/ BSE: beast-sound-engine: handle HTTP requests on / BSE: beast-sound-engine: support --verbose BSE: beast-sound-engine: include jsonbindings.cc and hand out BseServer BSE: beast-sound-engine: add JS example comment for echo tests BSE: beast-sound-engine: require (example) auth string for connections BSE: beast-sound-engine: print connection Id BSE: beast-sound-engine: handle requests with Jsonipc::IpcDispatcher BSE: regex: add Re::search() BSE: beast-sound-engine: add tiny bit of color BSE: beast-sound-engine: implement simple websocket echo server BSE: beast-sound-engine: include non-tls websocketpp server config-checks.mk: provide $BOOST_SYSTEM_LIBS for BeastSoundEngine BSE: add beast-sound-engine.cc to build lib/BeastSoundEngine executable JSONIPC: jsonipc.hh: add restrictions to IsWrappableClass<> to satisfy g++-7.4 JSONIPC: head.js: add marshalling code for Javascript TESTS: integrate jsonipc/testjsonipc.cc:test_jsonipc() JSONIPC: Makefile: build testjsonipc JSONIPC: testjsonipc: add simple jsonipc test program JSONIPC: jsonipc.hh: add binding to use C++ struct APIs via JSON messages WEBSOCKETPP: fix 'noexcept' specifier Squashed 'external/websocketpp/' content from commit 13fec9f30 Squashed 'external/rapidjson/' changes from 08eb814e4..bd79eae15 Squashed 'external/rapidjson/' content from commit 08eb814e4 EBEAST: b/utilities.js: add 'Vue-v-inlineblur' directive EBEAST: b/menuitem.vue: adjust layout inside menurow EBEAST: b/menurow.vue: add component to pack Menuitems horizontally EBEAST: b/contextmenu.vue: fix FocusGuard interfering with menuitem actions EBEAST: b/contextmenu.vue: add box-shadow EBEAST: b/menutitle.vue: add component for menu titles EBEAST: b/menuseparator.vue: add separator for menus EBEAST: b/menuitem.vue: adjust selector specificity and border EBEAST: b/contextmenu.vue: adjust selector specificity and padding EBEAST: variables.scss: provide more menu styles EBEAST: b/track-view.vue: fix style/template/script order EBEAST: b/contextmenu.vue: provide menudata and fix events on disabled items EBEAST: b/menuitem.vue: add menuitem component for use in contextmenu EBEAST: b/contextmenu.vue: add component for popup menus EBEAST: variables.scss: provide basic b-menu-* styles EBEAST: b/utilities.js: reimplement FocusGuard via event handlers EBEAST: b/utilities.js: warn about swapping the `data_tmpl` field name EBEAST: b/utilities.js: allow popup positioning at mouse pointer EBEAST: b/utilities.js: popup_position(): calculate popup positions EBEAST: b/utilities.js: allow modal shield background customization EBEAST: b/utilities.js: prevent mousedown3+contextmenu to re-popup menus EBEAST: b/utilities.js: refactor focus cycling and modals into JS classes EBEAST: b/utilities.js: add fwdprovide() to forward ancestor properties EBEAST: b/utilities.js: comment fixups EBEAST: move main CSS color specs into variables.scss: EBEAST: b/vflex.vue: add container for vertical layouting EBEAST: b/hflex.vue: container for horizontal layouting EBEAST: b/flex.vue: add container for horizontal or vertical layouting EBEAST: window.html: fix argument processing EBEAST: introduce GLOBALCONFIG to pass configs from main.js to the renderer DOCS: rename @BUILDVERSION@ substitution config-checks.mk: remove unused VERSION_LONG BSE: Makefile.mk: avoid generating unused buildid.cc BSE: remove version_buildid(), instead use Bse::version() MISC: Makefile.mk: make distversion (version.sh -l) local to appimage and bintray TOOLS: bsetool: remove buildid BEAST-GTK: bstmain: remove buildid everywhere and stick to Bse::version() Makefile.mk: make distversion (version.sh -l) local to dist and distcheck config-checks.mk: get rid of unused VERSION_DATE DOCS: Makefile.mk: call `./version.sh -d` on demand BSE: remove version_date() from API TOOLS: bsetool: remove version_date() from output version.sh: fix short version if git is present EBEAST: window.html: load BSE files from the command line EBEAST: menus.js: print loading error to console EBEAST: window.html: fix Vue / utilities dependency and provide $log EBEAST: b/playcontrols.vue: remove old CSS EBEAST: b/part-list.vue: fix double include EBEAST: b/hotkeys.js: fix keyboard activation of jQuery element EBEAST: b/utilities.js: guard against multiple instantiations EBEAST: menus.js: fix manual browser back/forward keys EBEAST: main.js: explicitely enable nodeIntegration EBEAST: main.js: disable experimentalFeatures which we don't use EBEAST: remove electron-devtools-installer/VUEJS_DEVTOOLS which causes crashes EBEAST: v8bse/Makefile.mk: silence excessive V8 deprecation warnings EBEAST: v8bse/Makefile.mk: relax version matches and update electron header URL EBEAST: b/icon.vue: upgrade to use the Fork-Awesome-1.1.7 WOFF2 file EBEAST: Makefile.mk: provide the Fork-Awesome-1.1.7 woff2 and CSS files EBEAST: b/icon.vue: add unicode symbols via :uc and material icons via :mi EBEAST: Makefile.mk: provide woff2 and CSS from material-icons-190326.1 EBEAST: b/icon.vue: fix nosize attribute EBEAST: change vc-* references to b-* EBEAST: Makefile.mk: change vc/ to b/ EBEAST: b/: change vc-* prefix to b-* EBEAST: b/: rename beast vue component directory from vc/ to b/ Squashed 'external/v8pp/' changes from 792dd225f..f2720534b EBEAST: v8pp_property: add v8pp::property wrapper for getter/setter pairs EBEAST: v8bse/V8Stub.py: check result from v8::Script::Compile()->Run() EBEAST: v8bse/nodemodule: add "v8pp/persistent.hpp" include EBEAST: v8bse/nodemodule: use `v8::Local` instead of `v8::Handle` EBEAST: v8bse/V8Stub.py: use `v8::Local` instead of `v8::Handle` Squash 'external/v8pp' changes from cda26b60e..792dd225fa42 EBEAST: vc/utilities.js: use a 170ms delay for focus activation EBEAST: package.json.in: upgrade electron to 3.1.12. EBEAST: vc/modaldialog.vue: add focus cycling EBEAST: vc/modaldialog.vue: reduce modal dialog wrappers EBEAST: vc/utilities.js: modal_shield: add 'focuscycle' option EBEAST: utilities.js: add list_focusables() EBEAST: vc/utilities.js: fix missing focus_guard increments EBEAST: temporarily add .active to elements activated via Enter EBEAST: vc/hotkeys.js: use key matching from utilities.js EBEAST: vc/utilities.js: add missing export of is_navigation_key_code EBEAST: vc/utilities.js: export match_key_event() EBEAST: vc/utilities.js: export key codes and is_navigation_key_code() EBEAST: vc/utilities.js: add in_array() EBEAST: vc/modaldialog.vue: fix tabindex for modal widget children EBEAST: vc/hotkeys.js: allow Enter for focus activation via keyboard_click EBEAST: vc/utilities.js: add keyboard_click() EBEAST: vc/part-list.vue: remove extra this to fix linter warning EBEAST: vc/bundle.js: sort component registration EBEAST: use fork-awesome-sprites-0.1.svg instead of Font Awesome 4.7.0 sprites EBEAST: remove icon-button.vue, we now use vc-icon EBEAST: vc/playcontrols.vue: use vc-icon EBEAST: vc/icon.vue: add component for SVG icon rendering EBEAST: package.json.in: remove font-awesome-4.7.0 npm package EBEAST: Makefile.mk: download fa-sprites-4.7.0.svg asset BSE: bsestorage: fix scanner_parse_paren_rest to capture float digits EBEAST: vc/part-list.vue: update docs and css includes EBEAST: track-list.vue: keep track ctrls out of horizontal scroll area EBEAST: part-list.vue: extract vc-part-list component -- Yours sincerely, Tim Janik https://testbit.eu/timj Free software author. _______________________________________________ Linux-audio-announce mailing list Linux-audio-announce@lists.linuxaudio.org https://lists.linuxaudio.org/listinfo/linux-audio-announceReceived on Wed Jan 1 02:16:38 2020
This archive was generated by hypermail 2.1.8 : Wed Jan 01 2020 - 02:16:39 EET