10.09.2023 *** MusE 4.2 *** 03.09.2023 - Fluidsynth MESS: Fixed deprecated function calls at version >= 2.2 (Tim) 31.08.2023 - Fixed issue 1106: Running scripts in midi editors takes waaay too long. (Tim) In Scripts::executeScript(): Changed from applyOperation for each event which is very slow, to applyOperationGroup just once for the whole lot. 30.08.2023 - Fixed issue 1238: Not responding to program MSB from inputs. (Tim) Ancient bug, 20 years? Problem with Midi Filter and midiFilterCtrlxxx globals. 28.08.2023 * New: Midi remote control feature redesigned. (Tim) Now with learning, port, channel, value type trigger/toggle/momentary, global/song settings. - Also rewrote midi-to-audio controller assignment learning code, to follow these changes. 03.08.2023 - Fixed issue 1233: RtAudio 6 compatibility. (Tim) Tested OK with RtAudio 6.0.1 31.07.2023 - Fixed midi remote control: Don't accept note-offs. (Tim) Symptoms were: Double step-record entries, transport record toggling, double play etc. - Changed all references to the app's url, help url etc. (Website has changed). Created ORGANIZATION_URL, ORGANIZATION_HELP_URL, ORGANIZATION_CODE_REPO_URL in config.h.in 26.07.2023 - Fixed broken midi to logarithmic audio controller assignment, such as volume. (Tim) 06.07.2023 - Hexfloat values: Rework code with help from donarturo11. (Tim) Avoid per-thread thread-safe locale calls (uselocale etc). Not available on mingw for ex. 17.06.2023 - Fixed: LV2 Synths like Odin-II not responding to automation since around 29.04.2023. (Tim) 15.06.2023 - Fixed issue 1121: Undefined symbol ipatch_close. (Tim) ipatch_close was introduced in libinstpatch 1.1.0 - Changed: Midi export: Turn off 'export zero velocity note-offs' setting by default. 13.06.2023 - Fixed: File menu > close hanging. Further to 13.05.2023 (Tim) Check if immediate deletions took place. Also, in track info panel, NULL the strip widgets BEFORE deleting them, instead of deleting then nulling. 12.06.2023 - Oops. Fixed mistake at 15.05.2023: Link libinstpatch with 'muse' module, not 'core'. (Tim) 11.06.2023 - Fixed issue 1120 "Cannot clone parts". (Tim) Several pieces of code were fixed, including one 10-year-old mistake. Tested OK copy/paste/clone with several different tracks types. 29.05.2023 - Fixed: Still more crashes / bad behaviour on song (re)load. Further to 25.05.2023. (Tim) Fix at 13.05.2023 (wait for top level widgets to be deleted before continuing with load) was good but needed to include more than just the top levels. Child widget destructors are called AFTER the parent. So there was no choice - add SOME of those widgets to the list of pending deletes. Specifically, widgets connected to external signals heartBeat timer, songChanged, configChanged. - Fixed: Another crash in Master Editor: Removed members 'hscroll' and 'vscroll' which were hiding base MidiEditor versions causing crash. Also initialize base hscroll, vscroll, time to null. 26.05.2023 - Fixed: DSSI plugins: Crash with plugins that have run_multiple_synths(). (Tim) The function was not being called correctly, valid arrays must be passed even if empty. 25.05.2023 - Fixed: More crashes / bad behaviour during song (re)loading. Further to 08.05.2023. (Tim) Eliminated QPointer in class MusE. Bug was pre-existing (not me). The pointer was failing to nullify itself soon enough, causing crashes and/or errors like: "QMdiArea::setActiveSubWindow: window is not inside workspace" and "unknown tag <...> at line xxxx". - Fixed: Rewrote several functions in class MusE for more safety. readToplevels() and accompanying findOpenEditor(), startDrumEditor(), startMasterEditor(), startWaveEditor(), startPianoroll(). It was too easy for readToplevels() to mess up badly if it failed starting an editor. - Fixed: Some, possibly all, ancient intermittent crashes when recording or playing wave tracks. Our SndFile class used a reference counting system but it was non-atomic and not thread-safe. Code disassembly revealed timing holes where other threads could wreak havoc. Replaced with atomic reference counter and atomic pointer to SndFile. Carefully rearranged and rewrote the reference counting system. Testing stable so far... - Fixed: Transport completely unresponsive upon song load, intermittent. (My fault long ago). Do not call audioPrefetch->msgSeek() in seqStart() since it's already initiated by audio start. It was a non-no: Two different threads - gui and audio - had put seek messages into the prefetch message pipe. The result was chaos with 'seekCount' on the prefetch end of the pipe. Reset prefetch 'seekCount' to zero in AudioPrefetch::start(). In case 'seekCount' ever messes up again, this allows simply reloading a song, or menu > 'Restart Audio', to fix the problem. Disk prefetch thread is NO LONGER REALTIME! It is now a default NORMAL thread. (My fault long ago). Rewrote MusE::seqStart() so prefetch is started before audio. Also, wait until prefetch is running! TESTED OK playing and recording complex songs. The prefetch cache maintained a high fill level. TODO: Now that disk prefetch thread is no longer realtime, replace its pthreads with QThread, for easier cross-compatibility! TO FIX: A small bug where the transport sometimes fails to return to the saved place on song load. - Fixed: Subtle error: Editors wouldn't open multiple parts sometimes. Failed if another editor contained the same number of parts AND at least one of the same parts. It was a pre-existing bug in MusE::findOpenEditor() (not me). 17.05.2023 - Fixed serious typo at 13.05.2023: On load, midi config wasn't cleared, causing crashes. (Tim) 16.05.2023 - Fixed (maybe): LV2: Missing link with libserd. (Tim) Found this at opensuse live build log/multimedia:proaudio/muse/openSUSE_Tumbleweed/x86_64: "undefined reference to symbol 'serd_node_new_file_uri'" Only one serd call was added in 2015 by danvd. A later neglect by me perhaps? 15.05.2023: - Fixed: Crashes with certain plugins that use libinstpatch (Fluida lv2 etc). (Tim) It was recommended to call ipatch_init() in the main app. This was added. 13.05.2023: - Rewrite of 08.05.2023: Use alternate method for top level closing (wait for destroyed signals). (Tim) Qt bug reports response told me not to do it the other way. - Fixed: Pre-existing long-time crashes pressing Ctrl-N (New) -O (Open) etc. more than once rapidly. Install mechanism to ignore such multiple actions while in the middle of clearing/loading a song. 09.05.2023: - LV2: Slight tweak: When a control port's maximum is not specified, set to 1 instead of 0. (Tim) TODO: It's likely intended to allow user settable min and max, but we have no mechanism to let them. 08.05.2023: - Fixed: Ancient crashes when loading another song or file > new or file > close. (Tim) In MusE::clearSong(), after calling close() on the windows (which may be marked as delete-on-close), make freakin' sure to call "qApp->sendPostedEvents(nullptr, QEvent::DeferredDelete)". It turns out that delete-on-close calls deleteLater() - NOT delete! It also turns out that there's a kind of Qt bug where you cannot simply call sendPostedEvents(0, 0). See comments in MusE::clearSong() about how difficult this was, and how the solution was found. 29.04.2023: - Fixed: Synths/plugins: Crashes in getData()/apply(). Caused by 14.04 changes. (Tim) Oops. Reinstate check for zero slice size in LV2 VST DSSI ::getData(), and PluginI::apply(). - Fixed: VST: Crashes revealed by Pianoteq 8. (Tim) Remove idling code in audioMasterUpdateDisplay and move it to audioMasterIdle, in the callback. In VstNativeEditor, add a close() function and call it from destructor. Remove code from closeEvent(). 28.04.2023: - Revert: Pull 1099: "Move event list editor from dock to window." (Tim) This was kinda not good. The list editor really belongs in a dock beside the pr/drum editor as a 'companion' since highlighting notes is supposed to work both ways. It is more convenient to have the two editors side-by-side rather than having the event list editor in a separate tab or floating. The pull code was kept. A define in cobject.h switches between the pull being off or on. It is called MOVE_LISTEDIT_FROM_DOCK_TO_WINDOW_PULL1099. - Fixed: Event List Editor: (When pull 1099 is applied) Added missing 'Display' menu. (Tim) Allows to 'float' the event list editor window. - Fixed issue 1119: Routing doesn't work with utf-8 symbols in names. (Tim) Changed all QString::toLatin1()/tolocal8Bit() usages to QString::toUtf8() in the following files so far: jack.cpp, jackmidi.cpp, route.cpp, routepopup.cpp. TODO: CHECK: Likely (many) more to do, EXCEPT some parts like xml, where we want SOME latin1 compatibility. 25.04.2023: - Follow-ups to 14.04.2023: More fixes/features. (Tim) * NEW: Export midi: When exporting only selected parts, a new option in the import/export settings dialog allows alignment of the exported parts to bar zero (removes unused space to the left). - Fixed crashes: Certain operations, for example when turning off grid after markers added. Lambda from MasterEdit.cpp was still active after MasterEdit closed and deleted! connect(MusEGlobal::muse, &MusE::configChanged, [this]() { configChanged(); } ); Fixed all places using lambda connections from outside. Delete the connections in the destructors. Qt docs warn that such connections are NOT automatically deleted. - Fixed: Midi export: Old, slight timing mistake in 14-bit/(N)RPN/Patch controller event export times. Was sending each component event at t, t + 1, t + 2 etc. All component events should be at the same time. - Fixed: Midi playback and midi export: Some or all (N)RPN controller graph values were being discarded. Was a problem with optimization in MPEventList::add(). Re-wrote to be less strictly optimizing. - Fixed: Midi import, export, and recording: Channel-less event types were not sorted correctly in the event list. In MEvent::operator<(), do not compare channels if either event is channel-less. - Fixed: Midi import, export, and recording: Patch event types were not sorted correctly in the event list. In MEvent::sortingWeight(), ensure high and low bank controller events come before program events. - Fixed: Midi recording and midi import: Composite controllers like (N)RPN and Patch were mis-read as non-composite. Re-wrote ending (optimizing) part of midi.cpp:buildMidiEventList(). Handle controllers separately than other events. - Fixed: Midi export: Do not export events that are outside part borders. - Refine spamatica's "Fixed compatibility with qt5.9.5" commit 489034a. - Refine spamatica's "Fixed another qt5.9.5 compatibility issue" commit a335362. - Refine spamatica's "fixed another compat build error" commit 3c6777f. 22.04.2023: - Briefly show "Project saved." message on status bar after project has been saved (rj) 16.04.2023 - From 14.04: Old songs' automation values not loading correctly in locales other than 'C'. (Tim) Oops, force c locale to 'C' in museStringFromDouble() and museStringToDouble(). Using a per-thread thread-safe technique with uselocale() et al. 15.04.2023 - From 14.04: Unable to enter values in entry boxes in locales other than 'C'. (Tim) Oops, add locale in DoubleLabel::valueFromText(). Test OK with locale = fr. 14.04.2023 * Spring 2023 large fixes and features: (Tim) * NEW: Soft bypass support for plugins. Different types are supported: True soft bypass controller (LV2, future VST3), soft bypass function with no controller (VST2), emulated bypass controller (TODO), and regular emulated bypass with no controller (LADSPA, DSSI etc.). When a plugin is soft bypassed we (must) let it run ALWAYS so that the plugin handles all the bypassing itself (we trust - hope - it will be 'lighter' CPU usage). The generic plugin UI 'Bypass' button overrides any soft bypass controller graph. * NEW: Generic plugin UI 'Off' button. This completely bypasses the plugin even if it has soft bypass. It is the ultimate 'turn off' mechanism, guaranteed to bypass all processing, whereas 'Bypass' may still process if it's soft. * NEW: Some entry boxes (log, linear) now support metric suffixes, where appropriate. You can type "0.000001234" or "1.234u", and "12345" or "12.345K" for example. * NEW: Value units. Where supported (LV2), units will be shown in the edit boxes such as Hz, dB, ms etc. Don't be alarmed if you see things like "1.234K ms". I just had to keep the units and the metric suffixes separate, it was the only way. LV2 has unit conversions, but they were not quite robust enough to do what I wanted. Plus when units change say from "s" to "min", then our slider/meter scales would show wrong units and would have to dynamically change with the units. Very difficult. * NEW: Hexadecimal floating point storage. Preserves 100% accuracy in song files. Used where appropriate (too many decimal digits). Both hex and decimal values can be mixed (manual decimal entry for example). Applied to audio controller values and graphs for now. More later. C/C++ have supported hex floats for many years. But Qt doesn't seem to natively. * NEW: Export midi selected visible tracks only. In main app menu. * NEW: Export midi selected parts on visible tracks only. In main app menu. * NEW: LV2 midi-out support added. Supports things like midi arpeggiators, midi effects etc. Fixed: VST midi-out: Recording times were way off. (Midi arpeggiators, midi effects etc.) Added: Latency correction for VST midi-out. Fixed: Crash in undo/redo system: Major regression several months ago. For example delete a part or track, then undo redo etc. caused crash. Rewrote undo's clearDelete() and deleteUndoOp() routines. Fixed: Crash when removing or replacing plugins from rack. Some heavy graphics moves were being done in realtime thread. Fixed: Crash in track list TList::mouseReleaseEvent() when track is NULL. Fixed: Crash in midi/synth configuration dialog when clicking on port device column. Popup's action text was being read AFTER the popup was deleted. Seems to be my fault from 2019 according to annotations? Fixed: Crashes in remaining places calling wrong undo constructor. See 06.12.2022 Fixed: Occasional show-stopping glitch when recording or live-monitoring midi: Notes would become badly timed, very old notes would play along with new ones in a weird 'cycling' effect, requiring restart. Replaced old class MidiRecFifo with more recent LockFreeMPSCRingBuffer. Caught old class skipping read position and mis-reporting the size, leaving a messed-up state. It was concluded that this may have been an concurrency/atomic problem. LockFreeMPSCRingBuffer was added few years ago. It has worked flawlessly so far. Stack Exchange was consulted on the old class and whether the newer FIFO was really sound. Old class agreed bad - use of 'volatile'. New class favourable but with TOC-TOU warnings. Hopefully this cures the bug. Remains to be seen again - or not? Fixed: Pianoroll and drum editor: Copy/paste broken: Oops! Pasted from bar 0 instead of first copied note. Rewrote pasting routines in functions.cpp Fixed: When track off could not click on mixer strip expand arrow icon or double click name. Don't disable the track mixer strip label. Fixed: 'Fine' slider Shift key operation (was making it coarse not fine, and plugin sliders were messed up - moving way too much when Shift held). Fixed: Midi event buffers overflow when a synth track's synth is 'unavailable'. Flush ring buffers and device event lists in SynthI::getData(). Fixed: Editors: Opening multiple parts in editor (via arranger right-click popup) also caused track rename dialog to pop up. Do not respond to actions that have no integer data value. Fixed: Wave Editor: Could not open multiple parts (via arranger right-click popup). Fixed: Audio track automation graphs: Copying+pasting points from multiple controllers: Oops. They were accumulating in each target controller graph as paste progressed. It was a problem in functions.cpp : readAudioAutomation(). Fixed: All places using MidiDevice::openFlags() to check if read/write is OK have been changed to use MidiDevice::readEnable()/writeEnable(). This is because openFlags() are the DESIRED flags whereas readEnable()/writeEnable() indicate whether the device was ACTUALLY successful in opening in read/write mode. So it's more faithful to the read/write columns of Devices list in Midi Config dialog. * Major plugin/controller/logarithmic/UI changes: (Tim) Fixed broken plugin/synth logarithmic audio controls, edit boxes, and graphs. Significant streamlining and redesign of classes Meter, Slider, DRange, DoubleLabel, mixer strips AStrip and MStrip, generic plugin UI, and several others. Support logarithmic and dB controller streams. Previously mixer strips and generic plugin UI were responsible for all conversions to and from log, dB, or integer values, to be shown in sliders, meters, and boxes. Now all of these widgets operate independently and do all conversions themselves. In other words they simply 'hook onto' a controller stream with no further work required by the parent. That cleaned up strips and generic plugin UI code A WHOLE LOT. Significant speed optimizations: Classes Meter, Slider, DRange, and DoubleLabel are now highly optimized for drawing. They use QRegion for fine-grained updating and painting. Most paths and rectangles are pre-calculated in resizeEvent() instead of paintEvent(). In particular, Meter is one of the few large widgets that is constantly being animated, and it is very fast now. Fixed weak support for rare 'reverse' controllers where minimum is greater than maximum. (AlienWah plugin 'phase control' for example.) When the minimum slider and minimum meter Global Settings differ, meter scales are automatically shown. They MUST be shown to avoid the misconception that the meter scale is the same as the slider scale, which it is not! Replaced generic plugin UI meter output edit boxes (useless) with faster labels. 06.12.2022 * Fixed issue with wrong constructor being instantiated when clicking rec-arm and input monitor when having multiple tracks selected (rj) 21.11.2022 * Reworded quit and load new dialogs to make it clearer that data will be discarded (rj) * Dirty flag was not kept when cancelling the load New operation (rj) 14.11.2022 - Automation READ mode: Play: Re-enable graph streams when controls released. (Tim) Also re-enabe the streams if the graph is edited. 10.11.2022 - Fix issue 1088: Cannot copy/paste parts. Fix previous 9/24/22 fix. (Tim) Was slight problem in parseArrangerPasteXml(). 27.10.2022 * Fix open editor in tab or new window behavior * Move List Editor from dock to window 23.10.2022 * Changed project create default to make a sub directory (rj) 10.07.2022 * Midi assign and mixer overhaul, fixes: (Tim) * New: Midi control assignment: Mute and Solo buttons can now be assigned to. Note this does NOT mean that Mute and Solo have actual controller graphs, it was decided against that. (A request from forums.) * New: Midi control assignment: Two assignment types now available in the Midi Control dialog: Track, which dedicates assignments to a single track, and Song which assigns to ANY tracks when they are selected. Availability of this new option varies with selected target control, for example only Volume and Pan audio controllers can be set to Song assignment type because they are the only ones common to ALL audio tracks, and other controllers mean different things to different tracks. * New: Momentary Mute and Solo buttons! Enable them in Global Settings or via the mixer or strip menus. Mixer: Fixed bug: When empty would not add any new tracks. Mixer: Ensure mixer is always large enough to show 'Create' and 'View' menus. Mixer strips: Code cleanup: Replaced Strip::mousePress/Release/MoveEvent with track name label handling and context event hadling because all the Qt standard controls on the strip were passing events to the strip. Rewrote strip popup menus, most stuff moved into the mixer View menu. 19.06.2022 * MORE Complete audio automation graphs redesign (Part 2): (Tim) * New: Audio automation graphs: Choice of DISCRETE or INTERPOLATED points. Buttons on toolbar select which mode to draw new points. Works per-point! A context menu item allows to change mode of all selected points. Role of 'interpolated' has been greatly reduced to that of just drawing, and all control recording, including external midi, is DISCRETE now. DISCRETE points are drawn as squares. INTERPOLATED points are drawn as circles. Note, INTERPOLATED mode only works for controllers that support it, such as non-integer or logarithmic. TODO: Make an integer interpolator so that INTERPOLATED works even on DISCRETE graphs! * New: LATCH automation mode, in addition to OFF, READ, TOUCH, WRITE modes. * New: Audio automation graphs: "Align all selected to point" context menu item. Vertically aligns selected points to the clicked point. * New: Adjustable graph point size. In Global Settings > GUI tab. * New: Buttons on toolbar turn the graph points on and off ! Allows to see the graphs more clearly. * New: Toolbar button avoids redundant recorded straight line automation points. - Reworked graph point hit detection and drawing. Precisely accurate now. - Midi controller graphs: Controllers popup menu: Midi controllers that are mapped to (synthesizer) audio control ports have their own heading now, to make it much clearer that they exist and what they do. - Fixed old bug in Audio::processMidi(): When a midi controller was assigned to an audio controller, operating the midi control would suddenly leave the audio controls inoperative. Likely happened years ago when time-stamp mechanism changed, this area was neglected. - Fixed Midi-to-Audio controller assignment not recording properly. Recorded frames were way off. Likely same reason as above. - Fixed audio automation 'WRITE' mode not storing initial value and not disabling the controller streams, when going from stop to play. Seems to have been broken for many years (since first github checkin?) - Eliminated old ugly HACK in class CtrlList: Removed _guiUpdatePending and support. Replaced (integrated) with an IPC mechanism. - Switched all code from muse_val2dbr (rounded) to new muse_val2db (unrounded). - Fixed some memory leaks in class UndoList when clearing the list. Allocated items were not being deleted. - As requested: Uncluttered the Arranger popup context menu by moving audio automation items into a sub-menu. - Bumped up songfile version number to ensure toolbars are updated correctly. 12.06.2022 - Fix clone parts not loading correctly. Oops, was a typo at 17.04.2022 (Tim) 04.05.2022 - Reverse script that reverses MIDI and DRUM parts incl controllers. (Staffan) 03.05.2022 - Reuploaded script (Fix issue 1037: Time stretching/shrinking for midi/drum parts.) (Staffan) 26.04.2022 - Added shortcut (meta+h) for toggling track height. If any track is larger than minimum, the first press will minimize all tracks, second press will expand all tracks to the alternate size, which is now settable in the configuration (rj) 18.04.2022 - Fix issue 1022: Allow even more zoom out in piano roll. (StaffanMelin) - Further to 17.04.2022: Added audio automation horizontal snap-to-grid. (Tim) 17.04.2022 * NEW Complete audio automation graphs redesign: (Tim) - Multiple graph points can now be selected. Lasso works. - Standard keys behaviour, same as found in parts, notes etc. - Copy/cut/paste/del supported. - Audio automation graphs can now be copied to other controller graphs. See 'Paste' each controller's color popup menu. - Points can be dragged past other points now. - Three paste/drop existing points erase modes (see right-click menu): Erase none, Erase (groups), Erase complete range. - After dropping moved points, a 'move mode' coloured block is active until blank space is clicked, which allows the points to be moved further, exposing existing points that were erased when dropped upon. - More colors and custom colors for audio automation graphs. - Controller names have been removed from the controller graphs and placed into the Track List 'Automation' column (expand to see more!). - All plugin controllers now have different colors instead of all green. Old green color scheme in old songs is detected by checking if two or more plugin controllers are green and changing them. * Other: - Eliminated OLD UGLY HACK: The global cloneList in songfile.cpp. Replaced with an informational structure passed among the functions. 08.04.2022 *** MusE 4.1 *** 04.04.2022 - Fix issue 1037: Time stretching/shrinking for midi/drum parts. (Staffan) Solved by writing a Python MIDI script, SpeedChange. Fixed small bug i scripts.cpp. 25.01.2022 - Fix issue 1063: Wrong midiport.h file searched. (Tim) Jack's midiport.h was being searched instead of our own. Poster's jack.pc file was different than most, putting the full path to jack. In our top cmake file, moved the include_directories statement that includes our own directories, closer to the top of the cmake file, to take priority. Poster reports this worked. 22.01.2022 - Instrument definition file Edirol-SD90.idf submitted by Stéphane Gagnon (rj) 19.12.2021 - Fixed build issue on Ubuntu 21.10 (g++ 11.2) in vamgui.cpp (rj) - Fix issue 1060: remove unused peak file from file system when resampling (rj) 29.11.2021 - Metronome: Added possibilty to load metronome samples from local path .config/MusE/MusE/metronome, this allows for changing metronome sounds while using the AppImage (rj) 23.10.2021 - LV2: Support loadDefaultState feature. Tested OK with Exampler plugin for example. (Tim) - LV2: Add initial support for requestValue feature. Unfinished - handled but ignored. (Stops crash with Exampler plugin 'request' button.) 09.10.2021 - Fixed bug in script execution causing controllers to be reset, fixes bug #1050 (rj) 03.10.2021 - Added instrument definition file for Roland SC55mkII created by FalCT60 (rj) - Increased default volume in FluidSynth and added a label showing the volume in numbers (rj) 28.06.2021 - New: Mixers can now be opened in a docked window (optionally). When the mixer dock is floating, a top window title bar is added so it's possible to minimize/maximize the window. (kybos) - New: Custom themes (*.qss files) can be added to the HOME themes directory, they will be displayed in the Appearance dialog theme selection. (kybos) 20.06.2021 - Fix crash 1028: Make effects rack 'move up/down' synchronized and real-time friendly. (Tim) - Also fixed a few problems with effects rack context menu. 13.06.2021 - Fix 1002: Remove initial focus from mixer volume boxes. Fix related Smart Focus problems. (Tim) 05.06.2021 - Fix more issue 1021: Copying synth track does not copy synth controllers. (Tim) 02.06.2021 - Fix issue 1021: Copying synth track does not copy volume, pan. (Tim) 31.05.2021 - Fix conflicting shortcuts in Add track menu. (kybos) 29.05.2021 - Add: Global setting to enable LASH. Disabled by default. (kybos) 28.05.2021 - Change default to sliders instead of knobs in mixer etc. (kybos) 27.05.2021 - Fix: Dysfunctional duplicate shortcut for Push events. (kybos) - Fix: Create customizable shortcut for Pull events. (kybos) - Fix: Standardize shortcuts for Goto start/end, range start/end. (kybos) - Add: Shortcut for Add track menu (default Insert). (kybos) - Fix: Disallow Return and Escape as customizable keys to avoid conflicts. (kybos) - Fix: Non-standard dropdowns in Midi config dialog. (kybos) - Possible fix 1013 + fix related errors in config.h.in + headers ex. plugin_cache_writer.h etc. (Tim) 26.05.2021 - Add track menu: Move "Recently Used" to menu root. Add key mnemonics for still faster access. (kybos) - Enable polyphony for piano in pianoroll. (kybos) - Fix: Step recording: Cursor not forwarded after chords. (kybos) 25.05.2021 - New #999: Midi editors: Play events when dragged with keyboard. (kybos) 21.05.2021 - Fix #1002 space stops working when opening mixer (rj) - Fix #1003: Drum editor: Mouse drag event copy not working. (kybos) 20.05.2021 - Fix #998: Add dedicated keyboard shortcut for deleting tracks in Arranger. (kybos) - Fix: Use proper widgets in midi sync and midi config dialogs. (kybos) - Fix: Don't show (and loop over) up to 200 unused ports in midi sync dialog. (kybos) - Fix: MMC fastforward/rewind functionality (issue #652) (rj) - More to 16.05: Fix midi metronome w/ latency correction. And rewrite 'stuck notes' code. (Tim) Class MidiPlayEvent now has a latency member. The 'stuck notes' code uses it for inclusion when converting from stuck-note-off ticks to frames. Midi metronome timing was incorrect. 18.05.2021 - Synth selection dialog improvements: Current item is always preselected; Info about multi-channel effects added; Better handling of Favorites (kybos) - New submenus for Favorites and Recently used synths (kybos) - Removed nested synth submenus (kybos) 16.05.2021 - Fix issue 779: Missing notes if too close together. Broken 29.06.2019. (Tim) 14.05.2021 - Added support for more MMC commands, including REC, Rewind, Forward (rj) - Improved support for midi remote control, can now toggle REC enable for instance. (rj) 01.05.2021 - Update tool/lib versions to Ubuntu 18.04 LTS level. (kybos) - Update c++ version to c++17. (kybos) - Fix: Many clang errors/warnings. (kybos) - Remove obsolete Qt switches, remove unused includes. (kybos) - Update github actions to Ubuntu 18.04. (kybos) 30.04.2021 - Fix #986: Crash in lv2 plugins when removed while native GUI is open. (kybos) 29.04.2021 - Fix: Track list: "Move single armed track with selection" function trying to arm invalid tracks. (kybos) - Fix: Deactivate recording button when last armed track is deleted. (kybos) 28.04.2021 - Fix: Number of bars not updating when midi resolution is changed. (kybos) 27.04.2021 - Fix some memory leaks found by Valgrind. (kybos) 26.04.2021 - Added shortcut for RewindOnStop to menu item (rj) 24.04.2021 *** MusE 4.0 *** - Fix: Drum list: Disable grouping options when no different tracks are involved. (kybos) 23.04.2021 - Part colours: Fixed 'live' recording virtual part overlay, and eventual created part. (Tim) Both now obey the chosen current part colour on the Arranger toolbar. Drawing of 'live' notes also fixed to obey dark/light inversion. 20.04.2021 - Fix neglect at 11.04.2021: No 'live' midi recording events drawn inside parts. (Tim) 17.04.2021 - Fix: Memory leak with Timeline toolbar. (kybos) - Fix neglect at 11.04.2021: No editor events shown if any hidden events at left. (Tim) 16.04.2021 - Save recent list as soon as a new file has been opened, this to eliminate the possibility that the update was lost incase MusE was not properly terminated (rj) 15.04.2021 - Looping: Fixed silent wave tracks when Jack transport off or non-Jack driver used. (Tim) Each AudioDevice class gets a new transportRelocateOrPlayDelay() method. For Jack it is 2 * segment size and for other drivers such as as RT (Pulse) or dummy driver it is zero. The looping code now uses this value to look ahead, it was a fixed value before. TODO: This still does not fix looping the Jack audio driver with MusE latency correction enabled, causing mis-aligned or silent playback. That bug fix is still WIP... 11.04.2021 * Reinstated part left border resizing: Further to 04.04.2021. (Tim) Extensive re-writes and alterations of much code to support it. Extensively tested with wave and midi parts. Perhaps most important, class EL (EventList) is now sorted by signed integer. ANY BUGS SHOULD only occur when there are left border hidden events, otherwise it SHOULD behave normally. Should be OK to use but still some areas need attention such as 'functions', merging and splitting, and more. - Wave Editor: Reinstated 'Next part' and 'Previous part'. 10.04.2021 - Fix: Drum list: Drag mode activated after field editing. (kybos) - Fix: Drum list: Crash in tooltip display with some show/hide options. (kybos) - Fix: Drum list: Crashes in Show used/named instruments display options. (kybos) 09.04.2021 - Fix: Drum list: Drag mode activated after every context menu call. (kybos) 07.04.2021 - Fix: Crash when MESS synth can't be instantiated. Now the (existing) warning popup is displayed instead (as originally intended). (kybos) 06.04.2021 - Add: Many new vector icons as replacement for old pixel-based ones. (kybos) - Fix: Improve visibility of custom drop-down triangles on dark background. (kybos) 05.04.2021 - Fix: Record button: Inconsistencies between button state and internal record flag state in many situations. (kybos) - Fix: Inconsistent state of (pseudo-)record-arm icon and mixer strip button in Audio output tracks after loading of some files. (kybos) - Fix #717: Record button mustn't be activated when no track is record-armed (a warning message is displayed now). Record button is automatically deactivated when no track is armed. (kybos) - Fix: Don't allow deselecting all tracks, as this hides the mixer strip which then can't receive events and gets out-of-sync. (kybos) - Fix: Add own icon for Audio output Downmix trigger to avoid confusion with the arm-record indicators. (kybos) - Add: New vector icons. (kybos) 04.04.2021 - Part resizing and other fixes. (Tim) Rewrite of part resizing routines, esp to the left. No longer possible to have hidden events before left border, would require integer negative event times. Too much work ATM. When resizing, use Ctrl key to choose whether to 'drag' all events along with the border. - Midi controller cache: Fixed problems when parts or tracks muted, or tracks off. Cache was not updated properly. - Undo/Redo: Fixed a problem where the Redo list was cleared and the Redo button was disabled even when only non-undoable operations were executed, such as simply when stopping the transport (which executes non-undoable EnableAllAudioControllers). - Arranger and Wave Editor: Embellished wave drawing with dotted event boundary lines and coloured wave boundary lines. (Due to a Qt drawing bug, I had to break up long patterned lines!) 03.04.2021 - Fix: Appimage start time: Avoid updating plugin cache on every start. (kybos) 31.03.2021 - Fix: Don't load presets for lv2 plugins at program start to reduce start-up time and save resources. (kybos) 25.03.2021 - Fix: Wrong radiobuttons in Visible audio effects submenu. (kybos) 20.03.2021 - Fix: Improve spacings in global settings dialog. (kybos) - New: QSS properties for routing popup colors. (kybos) 17.03.2021 - Fix: Midi routes popup: Custom painted elements like checkboxes and menu item highlighting ignored stylesheets. (kybos) 16.03.2021 - Advanced router: Added 'Unavailable' colour to Jack audio ports. (Tim) 15.03.2021 - Fixed advanced router 'Unavailable' item colour and restoration colour. (Tim) 13.03.2021 - Fix: Metronome accents list not showing highlighted items. (kybos) 12.03.2021 - New: Settings to set gradient strength for track list and parts. (kybos) 02.03.2021 - New: Option to hide beat numbers in the Time scale. (kybos) 28.02.2021 - Moved scrollscale.cpp/h and cpu_toolbar.cpp/h from widgets to components. (Tim) They use our icon library, which cannot be allowed in the widgets module ATM. - Removed unused Awl and AL linking from several CMakeLists text files. 26.02.2021 - New: Multi renaming for selected parts. (kybos) 25.02.2021 - New: Add zoom buttons to scroll bars. (kybos) 24.02.2021 - New: Ability to assign custom colors to individual tracks. (kybos) - New: Part colors follow the track color if not overridden individually. Old behaviour can be restored in Appearance->Arranger. (kybos) - New: Part color toolbar. Drowdown to select current part color, button to assign current color (or track color) to selected parts. (kybos) - Fix: Parts created by double-click in range ignoring current part color. (kybos) 16.02.2021 - LinuxVST synths: Replaced songfile midistate with customData state block. (Tim) Uses compressed base64 just like several of our other areas. Old songs with midistate still load and are converted upon saving. 15.02.2021 *** MusE 4.0pre3 *** - Fix: Consistent sorting and terminology of all Functions menus. (kybos) - Fix: Dummy icon to work around Qt>5.12 menu styling bugs. (kybos) - Fix: Script popup couldn't be cancelled. (kybos) - Add: New vector icons for Quantize/Set range to selection. (kybos) 14.02.2021 - muse3 folder renamed to src for futureproofing (rj) - Rework: Removed LastEditedEvent from configuration and added it (rj) to the pianoroll specific edit menu instead + shortcut. 13.02.2021 - New: Menu option to Save As Template (rj) 12.02.2021 - Fix: Reworked Save As..., Project dialog and Save Revision. (rj) Project dialog is now only used on the initial save, after that the Save As dialog is used. For very quick Save As operation, use the Save Revision alternative which will increase a number at the end of the name to save a new version as quickly as possible. - Fix #836: Don't play existing midi events in replace mode. (kybos) 11.02.2021 - Fixed wrong exclusive indicators (radiobuttons) in some submenus. (kybos) 08.02.2021 - Fix #959: Trim event length function in pianoroll not working. (kybos) - Fix: Remove unused cutter tool from wave editor. (kybos) - Fix: Automation menu icon drawing. (kybos) - Fix #960: Wrong zoom level after track type change MIDI->Drum. (kybos) 02.02.2021 - Fix: Memory corruption by topwin toolbars. (kybos+rj) - Fix: Clean up and encapsulate Edit Tools code. (kybos) - Fix: Dark Flat theme: Improve visibility of checkboxes. (kybos) - Fix #265: Midi device dlg: Native GUI led not reflecting the display state. (kybos) 25.01.2021 *** MusE 4.0pre2 *** 23.01.2021 - Fixed SimpleDrums not loading. Moved raster widgets into components folder. (Tim) 20.01.2021 - Fixed bug in Create Project dialog where it would disregard the baseProject path. (rj) - Added tooltips for the various non self evident buttons in the Create Project dialog (rj) - Added a new dialog 'Save New Revision...' (SHIFT+R) for the case where you want to save but does not need the full create project dialog (rj) - Fixed keyboard track selection after duplicating tracks, it didn't like that multiple tracks was selected, if track up/down is done while multiple are selected it now picks the first instead of nothing at all. The source track is also deselected (rj) - Fixed automation point value printing for logarithmic values (rj) - Changed automation add events to place them on the automation line instead of where the mouse is placed, which often is slightly offset (rj) - Added the ability to cache midi event length when adding events with the mouse, this is to speed up adding similar events as it now will default to this length. Idea from a discussion on linuxmusicians forum (rj) 19.01.2021 - Add: Functions for moving multiple tracks in the track list (up, down, top, bottom), incl. key shortcuts for each. (kybos) 16.01.2021 - Fix #933: Sort automation controls in menu. (kybos) - Fix: Crash when changing volume/pan by keyboard shortcut for drum tracks. (kybos) - Fix: Changing volume/pan by keyboard shortcut also changed midi tracks that were not selected. (kybos) 15.01.2021 - Fix #718: Missing strips/selections at first mixer display. (kybos) - Fix: Missing simpledrums plugin, both normal build and AppImage. (kybos) 14.01.2021 - Add: Improve Key Shortcuts maintenance dialog. Add filter for shorcuts, list contexts per shortcut. (kybos) - Fix: HiDPI scaling for VST plugins. (kybos) 13.01.2021 - Add: Consistent shortcuts for Add track. Show shortcuts in menu. (kybos) 11.01.2021 - New: Selection dialog for Add synth track incl. favorites handling in dialog and synth menu. (kybos) 06.01.2021 - Fix #940: Tool shortcuts not updating properly when changed. (kybos) 03.01.2021 - Fix #932: Add Show All with Events/Hide All to track automation menu. Modify control icon so it's clear which controls contain events. (kybos) 02.01.2021 - Add: Enable CC events for MIDI remote control (#566). (kybos) 30.12.2020 - Fix issue #935: Track list toggling of solo/mute indicators. (kybos) - Add: Resizing track height in track list now also works for all/selected tracks (CTRL/SHIFT). (kybos) 28.12.2020 - Fix: Relative paths for temporary files didn't work from AppImage, e.g. when calling external wave editor. (kybos) 26.12.2020 - New: Create generic LV2 UIs based on available plugin metadata. (kybos) 25.12.2020 - Added double click as a way to initiate changing shortcuts in the dialog (rj) - Changed default shortcut for SOLO track to META-N (From META-S as the system eats it on multiple systems) 23.12.2020 - New: Implement LV2 UI features FixedSize/NoUserResize. (kybos) 22.12.2020 - Update AppImage build scripts (AppImage is even ~8MB smaller now): 1. Build on Ubuntu 16.04 for better compatibility. 2. Include latest versions of lv2/lilv for better HiDPI support in LV2. (kybos) 21.12.2020 - Fix: Total number of bars not updated when signature has been changed. (kybos) - For issue 920: More values (480-based) in global settings midi division list. (Tim) 20.12.2020 - Fix: Most plugin native UI windows now should behave sensibly out of the box on HiDPI (of course plugins with no HiDPI/scaling support still look tiny, but there should be no oversized or broken Qt windows around them). Global setting for the HiDPI fix is now on by default, but is only active when at least one Hi-Res screen is found. The container window should now also adjust to specific screen in multi monitor setups. (kybos) - Fix: More fixes for Surge and others on HiDPI. Native UI window now resizes correctly when the zoom level in Surge itself is changed. (kybos) 19.12.2020 - Fix: More fixes for HiDPI withLV2 native UIs. Surge synth should now display an adequately scaled UI and not misbehave on resizing any more. Surge 1.7+ and liblv2 1.18 are required for scaling support. (kybos) 18.12.2020 - Fix: Improve handling of LV2 native UIs on HiDPI. (kybos) 15.12.2020 - Fix: Bug in Set range to selection, not always correctly set. (kybos) - Fix: Set range to selection not working in wave editor. (kybos) - Add: Menu item for Set range to selection in all relevant editors. (kybos) - Add: Dynamic value tooltip in control canvas. (kybos) 14.12.2020 - Fix: Support both old and new shortcuts for setting range markers as a default. Remove corresponding options from global settings. (kybos) - Fix: Improve channels column shortcuts in track list, avoid dependency on middle mouse button (add shift+RMB for decreasing values). Wrap channel values around when increasing/decreasing. (kybos) 11.12.2020 - Fix: Clean up edit menu, move Structure submenu to Edit->Global. (kybos) - Add: Add Duplicate track function to track context menu. (kybos) - New: New vector icons for Duplicate track(s) menu items. (kybos) 10.12.2020 - Add: Storing missing slider and other settings in MESS fluidsynth. (kybos) 07.12.2020 - Fix: Standardize Track list as far as possible. Use left mouse consistently for (multi)selecting tracks (except for flags/indicators columns). Use right mouse button for context menus where appropriate. Use double-click for text editing and access to frequently used items. Improve consistency when applying functions to multiple tracks. (kybos) - New: Add context menu to audio output track type column for downmixing. (kybos) 16.11.2020 - Fix: Initialize all fonts with the current system font family on first run, to avoid ugly looking sans-serif default on desktops like KDE. (kybos) 15.11.2020 *** MusE 4.0pre1 *** 12.11.2020 - New: Replace non-standard widgets in the mixer strip by standard and customizable ones where possible. Make the layout more symmetric and clear. (kybos) - New: New mixer strip and track list icons for the Deep Ocean theme. (kybos) 09.11.2020 - Fix: Issues with saving window geometry/state. (kybos) 07.11.2020 - Fix: Complete theme specific internal color handling. Colors are not saved in the central config file any more, but in theme specific config files. (kybos) 02.11.2020 - Add: Refresh function for the midi Scripts menu. Scripts can be re-read from dics without restarting MusE. Revise scripts code, put everything in one central class. (kybos) 01.11.2020 - Fixed bug 853: Crash in infinite loop in latency code. (Tim) Don't examine things connected TO a device if examining its 'capture' part. - Latency code: Optimization of most loops, should be a bit faster now, depending. 31.10.2020 - Add: Optional display of ticks/frames in the position toolbar. (kybos) - Add: Draw marker/position symbols as labels in the position toolbar. (kybos) 29.10.2020 - New: Color range between markers in the timeline ruler. (kybos) - Fix: Fix huge tooltips in bigtime window. (kybos) - Fix: Fix non-standard button in tempo toolbar. (kybos) 28.10.2020 - New: Add new toolbars to replace the separate transport window. The old behaviour is still available - the new toolbars can be hidden and the transport window shown. Display state of all windows/toolbars is saved when MusE is restarted. (kybos) - Add: Show index of active part in title bar/tab in multi-part editors. (kybos) - Fix: Move Plugins submenu (contaning global/user Python scripts) from global Midi menu to Arranger scope Functions menu, as it's only relevant for the Arranger. Fix scripts being applied to wrong (non-midi) parts. Check for active part selection before executing scripts. Rename relevant Plugin menus to Scripts to avoid confusion with all the other plugin types. (kybos) 27.10.2020 - Fix: Tap button - flash when waiting for input, reset timeout after each click. (kybos) 24.10.2020 - New: Proper settings dialog for plugins. (kybos) 23.10.2020 - Fix: Many bugs and crashes in the mastertrack list editor. (kybos) 21.10.2020 - New: Context sensitive help for many widgets and dialogs. (kybos) - Add more status tips. (kybos) 20.10.2020 - Fix: Resolve key shortcut conflicts in docks. (kybos) - Add: Add new shortcuts in docks (List master editor, Event list). (kybos) - Add: Outline focused widget in dock. (kybos) - Fix: Redesign marker dock for better usability. (kybos) - Add: Key shortcut hints for edit toolbar. (kybos) 19.10.2020 - New: Create new SVG icons for tracks. (kybos) 14.10.2020 - New: Replace marker pixmaps by vector drawing. (kybos) - New: Customizable colours for all markers. (kybos) 10.10.2020 - Fix: Change key modifiers for opening part in new window to Ctrl+Alt, because Shift always selects all parts of a track. So now even Ctrl+Shift+Alt works, opening all track parts in a new window. (kybos) - New: Added status bar. Can be optionally hidden in GUI settings. Moved CPU load display to status bar, xruns > 1 displayed in red (reset by doubleclick). CPU toolbar remains available but is hidden by default. Status bar is mainly used for context-sensitive help, to improve usability for new users. Many status tips created, more to come. Default status text shows audio driver and related data. (kybos) - Fix: Make sure current splitter sizes are saved on application quit. (kybos) 06.10.2020 - Fix: Replace marker icons by SVG. (kybos) - Theme: Color tab text (active/hover) for better visibility. (kybos) 02.10.2020 - Add: Show number of opened parts per editor in title bar/tab. (kybos) - New: Don't open new editor windows when the same part(s) is/are already opened. The existing editor window is activated instead. It's still possible to open duplicate windows by holding Shift when double-clicking the part or clicking the corresponding menu entry. Added a new submenu to open editors in new windows. Added new keyboard shortcuts for that. (kybos) - Fix: MDI subwindows not destroyed properly when part was deleted. (kybos) - Fix: No icons for submenus (well, almost). (kybos) - Add: Keyboard shortcut to jump to Arranger window. (kybos) 01.10.2020 - More vector icons (view menu). (kybos) 29.09.2020 - Replace global settings and midi port icons by vector ones. (kybos) 26.09.2020 - Replace editor icons by new vector ones. (kybos) 24.09.2020 - Add key shortcuts and context menu for tools in mastertrack editor. (kybos) 23.09.2020 - Fix mouse wheel steps for audio volume slider. (kybos) 21.09.2020 - Add centered mode for pan sliders. (kybos) 18.09.2020 - Change default theme to Dark Flat. (kybos) - Remove system styles selection, default to Fusion. It's still possible to force a different style by specifying it on the command line. (kybos) 14.09.2020 - Improve dock positioning/sizing. (kybos) - Save geometry of external windows automatically, remove redundant (and buggy) geometry settings. (kybos) 13.09.2020 - Add Event list menu/shortcut to midi editors for easy access to the event list dock. (kybos) - Clean up topwin/subwin parenting. (kybos) 11.09.2020 - Master track graphic editor doesn't open multiple windows any more. (kybos) - Fixed several colour issues in score editor. (kybos) 10.09.2020 - Add editor specific icons to subwindows for better recognizability. (kybos) 09.09.2020 - Allow only one instance of master list editor dock. (kybos) - Add menu item (View) and shortcut (F7) to show/hide all active docks. (kybos) - Fix docks behaviour when editor windows are switched. (kybos) - Fix potential resizing artefacts when loading older files into new tabbed GUI. (kybos) 08.09.2020 - Settings > Midi Division fixes: Full re-work of grid raster and snap system (Tim): - Replaced INCORRECT hard-coded snap/raster fixed-value tables throughout, with new class MusEGui::Rasterizer, provides CORRECT dynamic raster tables that change values, and dimensions, when global Midi Divison changes. There is one single global instance of this new class. - New class MusEGui::RasterizerModel works with class Rasterizer to provide a Qt model for use with combo boxes for example. Specific columns and maximum number of rows can be specified. Model is specially designed for rasters (for ex. in pianoroll the first row is three columns wide and says 'off'). - New class RasterLabelCombo replaces hard-coded raster snap combo boxes. Works with class RasterizerModel. With a high Midi Division more rows appear, meaning HIGH-RESOLUTION editing is possible, rivaling that of frames. New classes RasterizerListView, RasterizerTableView, and RasterizerTreeView provide three types of views for RasterLabelCombo. - Wave Editor: Added a 'Snap' combo box (RasterLabelCombo). - Grid lines: Fixed problems with unwanted red grid line colours. - Removed never-used GUI Division from Settings. - Canvases: Area before bar # 1 now FIXED WIDTH regardless of Midi Division or magnification, by rearranging xorg/yorg origin stuff in class View, ie. origin is no longer magnified. 04.09.2020 - New streamlined GUI: Tabbed MDI as default, with the option to detach/float the graphical editor windows, per preset or dynamically (mainly for use with multi-monitor setups). List based editors (markers, clips, master list, midi events) changed to docks. Arranger as the central point is fixed to the main window, not longer detachable/closeable. (kybos) - Reused snap/quantize shortcuts in midieditors (1-6) as snap shortcuts in arranger as I discovered it was missing, and it's pretty much the same thing. Also added a shortcut for setting quantize to off (8). Execution slightly annoying as changing the quantize in the midi editors after having it at off will always give triplets (which can be turned of by pressing T). Fixing that would require a more extensive rewrite. (rj) 03.09.2020 - Fixed crash in #842 extending parts to the left often caused a crash (rj) 14.08.2020 - Fix MusE hanging when calling the color dialog. There is now an option in Appearance->Style to disable native dialogs. (kybos) 13.08.2020 - Fix horizontal slider groove length. (kybos) 11.08.2020 - Implement theme specific icon overrides, both global and user level. (kybos) 09.08.2020 - More styling options for knobs. (kybos) 08.08.2020 - Piano: Reimplemented drawing, changed from pixmaps puzzle to vector-based drawing. (kybos) - Piano: Separated key selection from playback. Made markers/selections better visible and independent of each other. (kybos) - Piano: Made selection/current/pressed marker colors customizable. (kybos) - Piano: Made piano width changeable from stylesheet. (kybos) - Piano: Added tooltip showing current playback velocity. (kybos) - Fixed dark text on dark background in midi control canvas. (kybos) - Create new theme - Deep Ocean. (kybos) 30.07.2020 - Moved rewind on stop shortcut from arranger to global, fixes issue #839 (rj) 29.07.2020 - Midi export: Format 1: First track must have only timing/marker events etc, no notes. (Tim) - Midi import: Don't create a first track if no events left once stripped of recognized/absorbed events. In format 1, first file track is supposed to be reserved for timing/markers. - Midi import/export: New! Key signatures supported - supports 'minor' keys as well. - Score editor: New! Key signature names shown at top of staff. Minor keys supported. 25.07.2020 - Midi import: Fixed importation of SMPTE/MTC division midi files. (Tim) Converts linear time to ticks. Ignores existing MusE tempo map so that it plays at original speed - this allows the tempo map to be set up beforehand without actually affecting the song. 16.07.2020 *** MusE 3.1.1 *** 27.06.2020 - Midi patch popup menu: Include patch number in the items' text. (Tim) - Mixer strip labels: Added popup 'expand' button, to expand/close the strips. 26.06.2020 - Fixed bug left over from 21.01.2019: Midi controller graphs: Drag n drop broken. (Tim) Items were wrongly being erased after dropping. - Fixed issue 830: Wave Editor: Copy-on-write always triggered. Error from 01.01.2020 - Fixed issue 831: Compressed song files (.gz,.bz2): Blank song on load. Error from 01.01.2020 25.06.2020 - Some rework of mixer strip shortcuts. They now work in both Arranger and Mixer. Default shortcuts are Alt + Arrow keys to affect selected strip(s) (rj) 22.06.2020 - Fix slider/meter groove misalignment in mixer strip. (kybos) 20.06.2020 - Cmake option changes (Tim): Removed ancient ENABLE_VST and ENABLE_EXPERIMENTAL, and dangerous ENABLE_LV2_MAKE_PATH, and enabled ENABLE_PYTHON by default since it has been thoroughly updated. No code removed. PLEASE REBUILD your MusE ! 19.06.2020 - Fixed long-time meter and slider scale mis-alignment. New stylesheet property meterSpacing. (Tim) - Midi controller graphs: Fixed no repaint when adjusting vertical splitters. Clear WA_StaticContents in CtrlCanvas ctor - need full update because contents scale. - Midi controller graphs: Moved 'Add ctrl' button from bottom area to menu and toolbar as well. 18.06.2020 - Mixer + strips: Replace hard-coded shortcuts with configurable ones. Several weren't working. (Tim) New mixer shortcut category. - Updated Simpledrums so all parameters update a status field, previously it was impossible to know what the dials were set to. Changing the look of the dials would also be a good idea, left to do. (rj) 17.06.2020 - Fix main window being too small on large screens when MusE is started for the first time. The size and position are now adjusted dynamically for the current screen size. (kybos) - Fix main window size/position set to random values when a project or template is opened. The window is now only resized if the file contains explicit geometry information. (kybos) - Fix progress bar not being displayed when opening files. (kybos) - Mixers: Maximize button removed. Certain window managers ignore a set maximum size. (Tim) 16.06.2020 - Replace invisible icons in file dialogs in new dark theme. (kybos) - Unify colour configuration file naming. (kybos) - Fix invalid Global area default in file save dialog. (kybos) - Fixed some bugs with Cursor mode in drum editor (rj) - Effects rack: Ensure updateGeometry is called if number of rack items changed. (Tim) Was not required for at least suse, but required for at least mint cinnamon. 13.06.2020 - Add option to hide menu icons. (kybos) 12.06.2020 - Menu: 'Mixer Automation' is deprecated, MusEGlobal::automation now fixed TRUE for now until we decide what to do with it. (Tim) 11.06.2020 - Audio: Fixed bad feedback / pinned meters with muted tracks in play mode. (Tim) Was problem near end of WaveTrack::getData(), what constitutes "have data" or not. Said "have data" when there was none when muted, causing AudioTrack::copyData() to build up feedback data in the buffers instead of clearing them. 10.06.2020 - Arranger: Removed the small toggle button for mixer strip display/hide and cleaned up the layouts. Function is now accessible from menu (Display->Toggle Mixer Strip) or by pressing F3. 09.06.2020 - Fix regression from 07.06: Qt::endl and Qt::dec only from Qt >= 5.14 (Tim) 07.06.2020 - Fix Qt 5.14 / 5.15 deprecations (Tim) QString::SplitBehavior > Qt::SplitBehavior, QTextStream::endl > Qt::endl, QTextStream::dec > Qt::dec, Qt::WindowFlags f = 0 > Qt::WindowFlags f = Qt::Widget, QWheelEvent::delta > QWheelEvent::pixel/angleDelta, QWheelEvent::globalPos > QWheelEvent::globalPosition::toPoint, QWheelEvent::pos > QWheelEvent::position.toPoint. 06.06.2020 - Fixed regression at 23.05.2020: Crash in viewMouseReleaseEvent. Copy/paste typo. (Tim) - Many new customizing features implemented, internal colors, css properties. New theme created (Dark Flat) as a showcase/proof of concept. (kybos) 04.06.2020 - Fixed blank mixers upon auto-restart. (Tim) - Make MusE QMainWindow own the mixers. They had no owner, no deletion. Leak? Test OK so far. - Reload the last song upon auto-restart. Templates included, and midi config loading choice. Was tricky, possible wee corrections later...? 27.05.2020 - Midi controller panel: Replaced 'Ctrl', 'S', and 'X' button text with svg icons. (Tim) - Midi controller panel: Replaced 'per-note-velocity' bitmap with button and svg icon. - Midi Controller panel redesign: Create only required controls, not keep all 4 alive but hidden. 24.05.2020 - Fix regression at 06.04.2020: Can't connect Jack ports to audio input/output tracks R chan. (Tim) Don't check out of bounds index in AudioInput/Output::registerPorts(). When it is called by Audio::msgSetChannels(), the new number of channels has not been set yet. - Added support for adjusting automation for Global structure cut/insert (rj) - LV2: Fix plugins without 'programs extension' support: Send directly as midi events. (Tim) Fixes plugins like gmsynth.lv2, which have midnam support but no programs extension support. 23.05.2020 * New - PianoRoll Speaker button has two selectable modes, single note and chords: (Tim) 16.05.2020 - Popup menus: Changed the text '' in submenus, to the first item's text in the submenu. (Tim) - Oops, removed redundant addAction() in RoutePopupMenu::addMenuItem(), causing duplicate items at 'More...' menu breaks. - Fixed regression at 03.02.2020: Plugin dialog user 'categories' not showing LV2 plugins. 18.04.2020 - New option in Global settings -> GUI tweaks to (not) keep transport window on top (kybos) 13.04.2020 - Fix regression from 12.04.2019: Midi controller cache not proper after loading song. (Tim) Since we now resolve track and instrument references AFTER a song file is FULLY loaded, calling addPortCtrlEvents() on all tracks BEFORE doing the resolving had ill effect. Now port midi control cache events are added on all tracks AFTER the resolving. - Simplified several sections regarding adding/removing port midi control cache events. - Removed ALL 'old-style drum track' code. Track type NEW_DRUM has been renamed DRUM. - Simplified many drum controller (per-note) code sections to call a common function in MidiTrack::mappedPortChanCtrl() - Support midnam controllers (gmsynth.lv2 for example). This was very difficult. Midnam supports per-channel AND per-patch controller lists. Instead of adapting our own instrument and controller classes to NATIVELY support that, which would be NICE but much more difficult and time-consuming, the instrument simply 'compounds' its own controller list and the midnam controller list together and presents that to the outside code looking for a controller list. But no changes to our own instrument definitions and structures were made. This still required many changes to the outside code in order to pass the patch number. TODO: Midnam supports enumerated controller values. Use them! - Moved classes MidiController and MidiControllerList from midictrl module into a separate midi_controller module (library in libs) so that our midnam library can use it. 06.04.2020 - Fixed bug 790 Crash when dragging parts to blank area. (Tim) Bonus: Now supports dragging parts from multiple non-contiguous tracks, it attempts to create new tracks for all of them. Bonus: The 'duplicate tracks' dialog pops up, asks what should be copied. Bonus: Previously, user must press undo twice to undo the move. Now a single undo. - Fixed 'drum ordering' bugs (drum notes order) after drag parts or duplicate tracks. - Fixed some flaws with track copy constructors and assign() methods. - Added new class TrackNameFactory. A complete list of new UNIQUE track names can be requested BEFORE the new tracks are added to the song. All requests for unique track names now go through this central class. It uses a modified version of Robert's smart '#' character detection and naming sequencing. Robert wrote: "there is still a gaping hole in the logic, making multiple duplicates of multiple tracks still does not produce valid results" but his logic was OK - it was the fact that the tracks are not added yet, which this new factory class SOLVES. - Streamlined and fixed some problems with audio input/output track Jack port creation. The ports are now only (un/)registered when the track is added/deleted. - Added crash protection throughout audio processing against null destination buffers, which may occurr if Jack ports could not be created. - Extracted audio input/output track port registration in setName() into a separate registerPorts() method. The ports are no longer registered in setName(). 21.03.2020 - Add shortcut (Ctrl+U) for opening synth UI for selected synth-track in arranger (rj) - Added wave part extend beyond end of part if there is more wave file (rj) 18.03.2020 - Enable multiple resizing in piano roll (#748) (kybos) - Enable CTRL+Left Mouse Click item selection in edit mode in piano roll (kybos) - Enable Right Mouse Click for exclusive single selection in edit mode/piano roll (kybos) 17.03.2020 - Add more information to note tooltips in midi editors (kybos) - Add global setting for switching off the note tooltips (kybos) - Remove fixed track heigth from file templates, to enforce global setting (kybos) 09.03.2020 - Transfer Help content to github wiki, link Manual to wiki in MusE (kybos) 08.03.2020 - Fix EditPaste cursor HiDPI issue in midi editors->controller views (kybos) 05.03.2020 - Fix tool cursor not changing in midi editors->controller views (kybos) - Fix background color setting ignored in midi editors->controller views (kybos) 04.03.2020 - Add tool context menu to Score Editor (kybos) 28.02.2020: - LV2: Now shows MidiName patch names (gmsynth.lv2 for example). (Tim) - Added share/rdf/README to describe what's there and why. 23.02.2020: *** Final MusE 3.1.0 *** 21.02.2020: - Drum Editor: Fixed horizontal scrollbar width and 'Ctrl' button position. (Tim) 20.02.2020: - Partial revert of 16.02.2020. dssi-vst works now. Extra path tab was required. (Tim) Description labels added to dialog vst path tabs (*.dll vs. *.so etc) Linux vst paths now include 'lxvst'. It's a commonly used folder besides 'vst'. Changed all std::getenv() in plugin_cache_reader.cpp to qEnvironmentVariable(). 19.02.2020: - Fix new drum move cursor. New Canvas::setMouseOverItemCursor() fixes hover cursor. (Tim) 18.02.2020: * New - MidiName instrument support, currently for LV2 : (Tim) Synths like DrumGizmo and AvlDrums should now show note names automatically. Will test FULL parser later with real midnam files, but should be OK for LV2. 16.02.2020: - Removed the VST tab referencing Wine VST and relabeled Native VST as VST (rj) - Remove Wine VST plugin type in dropdown as we only support that through dssi-vst and it is dead since many years 15.02.2020: - Fixed issue with plugin scan #763, where a valid vst plugin but nonfunctional was never added to the cache and hence caused a rescan every time (rj) - Added a question dialog for waiting for very slow plugins (like Addictive Drums 2) 14.02.2020: - Custom Drum Editor 'move note' cursor, fix a few others. Fix mouse-up restoration. (Tim) 13.02.2020: - Reverted previous addTrack change, it affected Insert menu which then behaved wrong. (rj) * Changed Add Track alternative in edit menu to have this effect instead * Added Insert Track to edit menu also, together with shortcuts - Oops! Fix bug 765: Crackling in recorded files. Caused by 01.01.2020 commit. (Tim) Changed SndFile::write(): wrFrames = realWrite(srcChannels, src, n, liveWaveUpdate); to wrFrames = realWrite(srcChannels, src, n, wrFrames, liveWaveUpdate); - Track List: Make current selected track darker than other (multi-)selected tracks. 12.02.2020 - Changed addTrack shortcut to insert after selected track, inserting before felt strange and made it impossible to insert tracks at the end (rj) - Drum list note names: Fixed mixing of default names with synth note names. (Tim) When there was no note name available from a synth for a note, it was allowing the default note name to appear instead. This is fixed and the note name will be blank now, that is, drum list should now fully respect the complete note name map provided by the synth - including unlisted blank names. 11.02.2020 - Some more work on MidiName support: Completed FULL parser and C++ bindings. (Tim) 04.02.2020 - Master track graphic editor: Fixed tempo ramp function was not undoable. (Tim) - Referring to 30.11.2019: "Fixed crash in drumlist when synth plugin was missing." Observed crash still there immediately (the drum list was empty). Fixed and tested OK, saving and reloading, even if synth plugin is missing. The drum list is filled now. Even if the missing plugin was MESS fluidsynth (unlikely), the default map will be used since no note names are available from the synth. 03.02.2020 - Fix issue 763: Plugin cache recreated on each startup. (Tim) When there was more than one LV2 plugin with the same name (but different uri) such as deteriorate.lv2/downsampler* and avw.lv2/downsampler*, the cache was recreated every time, and only ONE of the plugins was allowed, the other ignored. This MAJOR REWRITE of our cache and plugin system fixes that AND allows both plugins, as long as the uris are different (this is allowed in LV2). For example, both deteriorate.lv2/downsampler* and avw.lv2/downsampler* are now shown. The LV2 cache file has been ELIMINATED. It was useless, not necessary, caused problems. To distinguish between like-named plugins, several places where plugin names are shown now also show the uri either as a tooltip, or appended to the name, or replacing the library string, such as plugin dialog, synth menu, synth config, strip labels, tracklist... In addition, there was a problem with dssi-vst which caused cache recreation every time, since the dssi-vst library installs itself in BOTH the ldaspa and dssi folders. This has been fixed. The ladspa cache file now contains additional ladspa and dssi dssi-vst entries. TODO: There is a remaining problem: A shell plugin that reports no plugins may still trigger cache recreation every time because there is no entry in the cache file. Such as dssi-vst not finding any plugins. To fix this, the cache files must change from a 'flat' listing to one ALWAYS listing the shell plugins - and the plugins they contain (if any). 01.02.2020 - Global cut/insert: Overhaul. Fix crashes with markers. (Tim) Cherry pick from pos_ctrls_fixes branch: Redesigned markers and marker viewer. Marker functions now undoable! (Lack of that was causing crashes.) - Tempo, signature, and key maps: Fixed problems with Global cut/insert. Replaced complex realtime stage-2 map item-by-item operations with simple swapping of entire map with complete replacement map pre-composed in stage 1 (gui thread). Virtually zero cpu time, and realtime safe, no potential allocation or deallocation. TODO: Sig still seems to not undo quite correctly, possibly due to raster-snapping. Tempo list operations must be executed before wave part splitting! So two separate operations are done - user must hit undo TWICE to undo them! (Better that for now, rather than one single BUT INCORRECT undoable operation.) Most of this stuff is pre-existing. Still, it is better now ;-) 30.01.2020 - Replace deprecated QByteArray::[] 'past-end' usage with append() in xml module. (Tim) Caused thousand of errors in debug mode, very slow to start up. 29.01.2020 - Fixed and improved custom columns functionality (kybos) 26.01.2020 - Fixed broken version comparison macro in fluidsynti.cpp (Tim) - Replaced obsolete QTime with QElapsedTimer. Tested OK. - **Bumped up** song file version to 3.3, req for some new header fixes by kybos. 24.01.2020 - Global settings: Split GUI behaviour tab into two separate tabs (kybos) - Add another set of mouse shortcuts for range markers - Ctrl+Left/Ctrl+Right (kybos) 23.01.2020 - MESS FluidSynth: Add key modifiers to distribute soundfonts to all/empty channels with single click (kybos). 15.01.2020 - Cherry pick five things from pos_ctrls_fixes branch: (Tim) 1) Fix when tempo serial number is incremented. (Fixes broken looping etc.) 2) Add rounding choice to tempo tick-to-frame methods (part of pending Pos fixes). 3) Remove awkward lone undoOp in song.h 4) Pos class makeover: New 'lock'. Rounding choice. New method msmu() (MinSecMsecUsec). 5) Add default getDSP_Load() in class AudioDevice, remove useless ones in RTAudio/dummy. 14.01.2020 - LV2: Remove deprecated LV2_Event_Buffer and LV2_URI_Map_Feature. (Tim) 12.01.2020 - Oops. Reinstall missing darkgreendot.xpm (Tim) - Fix compile error when RtAudio headers not found. - Fix "lv2host_module does not exist" compile error when LV2 support disabled. 09.01.2020 - Fix rubberband compile error + pull trackheader size fixes from kybos. (Tim) 01.01.2020 * NEW - Audio live! time-stretch and samplerate-stretch conversion : (Tim) Merge from audio-convert branch. Many changes and fixes along the way. - Wave editor has two new tool buttons which place two new types of markers on the canvas. Move the markers around to affect the sound. Click on a marker to select it. Press Del to delete the marker. - Wave module moved into separate library with no external dependencies. - New MuseFrame_t MuseCount_t types. 16.12.2019 - Exposed new colours for stylesheets. See Ardour and Dark qss files. (Tim) - Fixed #740: sf3 files crash. libinstpatch code: We did not check returned pointers. 14.12.2019 * NEW - Audio effects rack size increased from 4 to 8 : (Tim) - New right-click context menu entry on strip labels: "effects rack visible items". 13.12.2019 - HOT Bug fix: Missing 3 MESS synths, undefined symbol MusEGlobal::config (Tim) Cause: #include "gconfig.h" in icons.cpp brought in core globals which should not be in these synth plugin libraries (or in icons module). Removed the line and instead passed the desired global value to initIcons(). That said, the plugins really should be stand alone and not use the icons module until the icons module becomes a true shared resource library. (Currently it is initialized by core, so not quite self sufficient yet.) So... I copied the required icons to the relevant synths, decoupling them from the icons module. By using icons directly from qrc instead of icons module, I was also able to remove the icons module from inclusion in widgets module (yay!), removing a further dependency of simpledrums synth which was missing too. * Module independence is a goal to strive for after 28.01.2018 MAJOR changes. 11.12.2019 *** MusE 3.1.0pre4 *** - Customizable size of icons and custom tool cursors (kybos) - Replaced one-letter column headers by icons in track header (kybos) - German translation updated (kybos) 10.12.2019 - Dependency problems: Moved several files. All source together with ui files now. (Tim) - Remove all dead obsolete trackinfo 'alt' button code. - FIXED: Mixer strips missing if loading an older song saved before 20.10.2019 - FIXED: Duplicate strips found in songs saved before 20.10.2019 - FIXED: Long-time mixer problem with restoring size. 09.12.2019 - Remove some more "old vs. new" drum track stuff, change some text etc. (Tim) 08.12.2019 - Added option for opening MDI subwindows maximized (kybos) - Oops, fix stuck icons from 06.12. (Tim) - Fix gross misnomer throughout, should be "timebase master, not "transport master". - Fix EffectRack::songChanged() crash when reloading songs: Check track still exists. (Tim) 07.12.2019 - Update start play position when making a seek. Rewind to Start behaves more logical then, imho (rj) - Fix some compile warnings with LV2 worker functions, some others. (Tim) - Moved appearance and confmport cpp/h files from /muse to muse/components. Trying to solve some dependency problems... 06.12.2019 - Fixed bug #719 downmix to existing file appends to the old file (rj) - Transport master fixes: New button on transport. Fix connect at startup etc. (Tim) Seems there is no way to ask Jack if are we transport master (without setting it). So new code in our Jack driver - and a 1Hz watchdog - monitor for changes to master status. Care was taken to not disturb who else may be master. Click flashing button to force. Tested the new button OK with three instances of MusE competing for transport master. 05.12.2019 - Added File->New from template... menu entry. File->New loads default template (kybos) - Fixed inconsistent UI texts where appropriate: (kybos) * Title-style for menu texts and window titles * Sentence-style for all other UI texts * Three dots (...) for menu entries triggering a dialog (like Save As...) - Fixed inconsistent tooltip font size (kybos) - Vector replacements for many pixmap icons (kybos) - Fixed bug #720 arm follows track did bad things while recording (rj) 03.12.2019 - Eliminated all but one tr("Empty") string usage in plugins/pipeline/rack. (Tim) - Snooper: Provide flashColor property. Changed it in Ardour and Dark qss themes. 30.11.2019 - Added a specialization of QMdiArea to work around problems with PgUp and PgDown shortcuts as it was found through Snooper tool that this is the widget that was stealing the keypresses. - Another keypress fix in pcanvas.cpp to allow Return to be captured - Fixed a crash in drumlist when using a drummap and opening without the port having been properly initialized (in this case the synth plugin was missing). The dm->port had an extreme value, now the range is checked. (rj) - Fix #697: On HiDPI displays, plugin native UI windows are automatically scaled by Qt, but most of the native plugin UIs are not scalable or apply their own scaling. There is now a global setting for reverting the Qt window scaling. It can be overridden for each soft synth track by a local setting in the Quirks toolbar. (kybos) - Fix # 708: Surge-vst crashes. It called our pluginHostCallback() immediately from instantiate() before we stored the pointer. Added VstNativeSynth::openPlugin() (Tim) 28.11.2019 - Fixed the DidYouKnow menu alternative so it shows the dialog even if the checkbox for not displaying it is checked. (rj) - Added a few more lines to the DidYouKnow.txt database - Snooper improvements, fix crashes, fix 'parented top level' not working right. (Tim) 27.11.2019 - Unfortunately had to revoke the 'easy fix' below for getting more shortcuts to work there were side effects... The search goes on for the 'real' solution (rj) - Snooper improvements. Moved to Help menu. Live realtime monitoring of events. (Tim) 26.11.2019 * New - Introducing the Snooper (object tree) for coders and stylesheet authors: (Tim) Click new Snooper button in Appearance to start. Then click on anything anywhere. 23.11.2019 - More keyboard shortcuts * First of, I found out that several shortcuts never end up in the dispatcher since they (rj) were tested against the "accepted" property. Seems this is not reliable nor needed, it affected atleast PgUp, PgDn and Return. * Arm currently selected track can now be bound: Default Ctrl+Return * Goto end of song can be bound: Shift+W 22.11.2019 - New solution to making bar lines more visible. Basically removed more hardcoded colors and made them configurable in the appearance dialog (rj) - Fixed escape-key shortcut for closing a few more dialogs/editors: master track list/graphical, instrument editor (rj) - Advanced router stylesheet support: New property 'RouteTreeWidget::categoryColor'. (Tim) Also specific instance IDs Router_input_tree and Router_output_tree, if desired. 21.11.2019 - Add command line option -C "Do not re-create plugin cache." (Tim) Avoids (looong) repeated re-creations in some cases. Helps devs avoid after rebuilds. 19.11.2019 - Soundfont *.sf3 files: Small tweak allows our MESS fluidsynth to load them. (Tim) 18.11.2019 - Add dedicated new 'mute parts' svg icon, for 17.11 (Tim) - Bug 681: Fix multichannel track feeding aux track, no audio. In AudioTrack::copyData(). - Fixed metronome selection of wave files, the selection in the ui didn't actually do anything. (rj) 17.11.2019 - Introduce new scalable icons and cursors for edit tools (kybos) Improved cursor interaction in piano roll/drum editor (event canvas vs. control canvas), cursor shape shows when cursor has no function in given area Consistent cursor shape display in all editors affected (midi, part, score, master, wave) Correct cursor size on HiDPI screens (fixes issue #637) - LV2: Fix sequencing/syncing plugins (Helm, LV2 metronome, NoiseMak3r...) (Tim) Fixed TimePosition usage. Add quirks class for different plugin behaviour observed. - Generic plugin UI: Added 'Quirks' buttons to toolbar: "fixed speed" (fixes NoiseMak3r modulator stuck in small loop in stop mode for ex.), "transport affects latency" (self-correcting LV2 Example Metronome for ex.), and "override reported latency" (for plugins with broken or inaccurate latency reporting). 12.11.2019 *** MusE 3.1.0pre3 *** 11.11.2019 - Added tab in Aboutbox with some runtime of MusE, feel free to add more (rj) - Disabled rate and size for audio device when Jack is selected as we currently cannot change this from within MusE (rj) 09.11.2019 - Reorganize instrument popup menu. (Tim) 08.11.2019 - Fixed missing font scaling in drum editor at lower zoom level (kybos) - LV2: Fixed program_changed callback lv2prg_Changed(), seemed completely wrong. (Tim) 07.11.2019 - Add: Tooltip for current note/instrument in the midi editors (kybos) 06.11.2019 - Adjusted raster drawing in view.cpp so it would draw lines that didn't (rj) draw correctly on my rig. We'll see if anyone objects * New - Instrument can now be changed on a Synth Track: (Tim) For example you can now set 'GM2' or 'My cool instrument' on ANY synth track. Not as useless/dangerous as it sounds. Tested OK saving/loading/changing instruments. - Add: Range selection (shift-click) for tracks (kybos) 05.11.2019 - Oops. Restore auto-create user instruments folder, likely swept away by 03.09 (Tim) 04.11.2019 - Implemented issue 644: Rewind on stop (rj) Added setting directly on Settings-menu as I think this might be a setting that is often changed might even consider making a toolbar button. - Some cleanups, especially the addition of using of an enum for CPOS,LPOS,RPOS 03.11.2019 - Fix issue 667: Hang on automatic restart. Reset jackStarted upon restart. (Tim) - Fix issue 638: Font too small in popups started from mixer strip (kybos) - Add: Double click on track ID selects all tracks of the same type (kybos) - Fix: Change piano keys in piano roll to rectangular shapes to avoid pixelation when scaled (kybos) 02.11.2019 - Mixers and strips: Mods and reverts to 20.10. (Tim) Removed new track UUID. Found a way to work with track index and a local LUID instead. - New: Persistent synth tracks. One consequence of the above fix is that synth tracks are preserved if the synth is not found. All data is preserved if project is saved. - Class EvData rewrite: Safer. Members protected. New methods such as resize(). 30.10.2019 - Fix some memory leaks reported by heaptrack. Still others are puzzling... (Tim) 29.10.2019 - Latency correction: Fix feedback/noise using channel routing (vs. omni routing). (Tim) - Fix issue 666: Crash if 'Prefer knobs not sliders' clicked on disabled instrument. (Tim) Changed delete to deleteLater() in ComponentRack::clearDelete() Disabled label was trying to call clearDelete() which deletes itself. 28.10.2019 * LV2 Major rewrite of state/worker support and more, fixes several synths: (Tim) - Worker message data now uses new LockFreeDataRingBuffer for bidi comm. Fixes major problems with synth workers. - Fixed problems with how our worker thread is awoken. Fixes several plugins. - Fixed problems with how our EvBuf reads port data. Fixes several plugins. - Fixed state file storing/reading and locations. State files are stored in a unique configuration folder for each plugin, even if the song file is not in its own folder. - All file references IN or UNDER the song project folder are deemed RELATIVE, to the plugin's configuration folder. All file references OUTSIDE the song file folder are deemed ABSOLUTE. - New cmake option ENABLE_LV2_MAKE_PATH, it is disabled by default !!! If enabled (NOT RECOMMENDED), the above mentioned configuration folders are used. If disabled, NO external files or folders are created parallel to the song file. This is what we want with MusE, all data stored inside the song file if possible. - Tested OK saving/reloading several synths that were broken before. 20.10.2019 * Mixer and strips - Save entire state. Fix label text: (Tim) - Entire state of mixer is now saved, including user-adjusted strip widths. The state is preserved even if no mixers are opened (created) during a session. This required re-working the mixer and strip configuration (song and config xml files) to be more persistent. - Mixer widths restoration: Fixed (hopefully) long-time problem with mixers not opening at their stored song size if the mixers are already open. - Strip track labels: Replaced multi-line word-wrap with elided (...) text. Reduced variable-font variation somewhat to avoid too-small fonts. Added tooltips on the labels to help see the full text. 13.10.2019 - Improvements to 11.10. Fix accuracy problems (re)storing view state. (Tim) - Jack midi: Suppress repetitive warnings of unused Midi Sense (ME_SENSE 0xfe). 11.10.2019 * Midi Editor now keeps state (zoom, pos, controllers) after closing: (Tim) Works on a per-part basis: Whatever you set on a part it remembers. Pianoroll Editor and Drum Editor done. 09.10.2019 - Pianoroll Editor: Increased default vertical zoom level from 1 to 2. (Tim) Was challenging. The global variable 'yscale' in pianoroll.cpp had no effect no matter what I put there. Fixed class ScrollScale (the slider!), had a problem with the initial scale. Replaced its curious successive approximation log() code with an actual log10() call, rounded up! Tested OK. 05.10.2019 - Merge PR 665 from hfiguiere: Remove unused "all.h" and all relevant code. (Tim) - Fix crash: SimplerPlugin (LadspaPlugin). Regression of 03.09. Wrong cache loc. 03.10.2019 - Redesign: All SongChanged flags are now 128-bit (split two 64-bit). (Tim) 128 bits of flags split as two 64-bit values in class SongChangedStruct_t, to support 32-bit OSs where 128 bit integers may not be available. All the SC_* #defines are now wrapped in a SongChangedStruct_t constructor. The new upper 64 bits are optional. They default to zero in the constructor. - Setting of extSyncFlag, useJackTransport, and useMasterFlag are now operations synchronized with audio. extSyncFlag and useJackTransport are now simple booleans. - Removed obsolete experimental _AUDIO_USE_TRUE_FRAME_ code. 15.09.2019 - Event List Editor: Rebuild upon time signature changes, shows correct BBTs. (Tim) 03.09.2019 - Replaced all hard-coded paths in main.cpp with QStandardPaths. (Tim) *** NOTE: This means the location of MusE config files and names have changed! Everything has been moved to ~/.config/MusE/MusE EXCEPT the qt config file which remains in ~/.config/MusE. The MusE config file 'MusE.cfg' has been renamed 'MusE-seq.cfg'. The MusE qt config file 'MusE-qt.conf' has been renamed 'MusE.conf'. The QApplication now has an organization name, application name, and organization domain. All QSettings usages now defer to these values instead of hard-coding QSettings("MusE", "MusE-qt"). These changes comply with QStandardPaths policies and QSettings behaviour. - Replaced getenv with qEnvironmentVariable or qgetenv in main.cpp - Disabled loading of default template files 'MusE-seq.cfg' and 'MusE.conf' when either was not found. They should not be required. All default values housed in the global config struct or other classes are now honoured. 01.09.2019 * Command line complete redesign using QCommandLineParser: (Tim) Supports long options. Qt text translations enabled. Cross-platform, no getopt used. * Python remote control redesign: Uses QThread instead of pthreads to start/stop the Pyro server. Launcher python code simplified. No custom event loop. Uses daemon loopCondition to cleanly shutdown. New MusE command line options for the python bridge: --pyro-ns-host --pyro-ns-port --pyro-daemon-host= --pyro-daemon-port --pyro-comm-timeout