-
Notifications
You must be signed in to change notification settings - Fork 71
/
ChangeLog
7849 lines (7758 loc) · 495 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
863
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
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 '<More...>' 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<host> --pyro-ns-port<port>
--pyro-daemon-host=<host> --pyro-daemon-port<port>
--pyro-comm-timeout<time (s)>
27.08.2019
* New! Restored Python remote control: (Tim)
- Completely updated to Pyro4.
- Compiles with Python 2 or 3.
- The API, the launcher, and ALL examples have been updated.
- Enabled with a cmake option and -y command line option, as before.
- BONUS: Either works with an ALREADY running Pyro NS, or else starts it.
- See new README.python for details.
- TODO: Some operations in pyapi.cpp:Song::event() are not realtime safe,
and do not allow undo (maybe that's a good thing - too many operations?).
23.08.2019
- MASSIVE tedious fixes: gcc9 and Qt obsoletes/deprecates causing compile failure. (Tim)
Replaced implicit copy constructors or assignment operators with explicit:
MPEvent, MidiRecordEvent, MidiPlayEvent, Pos.
Replaced ALL obsolete QSignalMapper uses, and some more (but certainly not all yet)
SIGNAL/SLOTs with Qt5 lambdas. (Very tedious, but at least mappers are all lambdas now!)
Replaced ALL (tons!) obsolete QFontMetrics::width() calls with ::horizontalAdvance().
Replace ALL obsolete qCopy() calls with std::copy().
- Fix 'ConstantLength' Python plugin: Error: PyQt4 not installed. Converted to Qt5. Test OK.
- Fix audio controls right-click automation 'set event': Failed unless 'touch' or 'write' on.
Call _aud_ctrl_list->add not insert in PendingOperationItem::executeRTStage() (AddAudioCtrlVal).
- Fix Score Editor: Delete notes crashes. Corrupt non-const Part* cast in ScoreCanvas::tagItems().
17.07.2019
- LV2: Fix plugins using worker extension, such as *v1 suite (drumkv1 etc.) (Tim)
When plugins pass us worker message data, don't just copy the pointer, copy the data.
The data is usually local in the plugin and goes out of scope by the time a worker
thread gets it, causing corruption (TM). Installed a std::vector for this purpose.
15.07.2019
- LV2: Removed ALL internal LV2 support. Too hard to maintain. (Tim)
And to get important changes sooner, we would need risky git versions of the libs.
- Support nominalBlockLength feature and coarseBlockLength property.
- Changed LV2_P_MIN_BLKLEN value from 'segmentSize' to 0, since we might vary the run.
- For plugin sub-runs, treat PluginPowerOf2BlockSize like fixed size for now.
TODO: Better support by quantizing the control period to power of 2.
01.07.2019
- libinstpatch fix: Newer libinstpatch.pc replaces old libinstpatch-1.0.pc (Tim)
30.06.2019
- Audio: Fixed old bug hopefully, yay! Symptom: Load a song, press play, and get like this:
"FIFO 0xda8d600 underrun" "WaveTrack::getData(Playback track) (A) fifo underrun"
Cures: In Audio::seek() do not return if we are already at the requested position -
let it update the prefetch fifo. Modified Audio::sync() to NOT repeatedly call seek()
if waiting for sync. Tested OK with precount, seek-while-precount, seek-while-seek etc.
29.06.2019
* New! Comprehensive full midi and audio latency correction / compensation: (Tim)
- This was a very tough problem to solve.
- Currently DISABLED by default until certain it is OK.
You must enable it. See the new Global Settings > Latency tab.
- Features: 'Corrects' (looks ahead) or 'compensates' (delays) ALL audio and midi
signals throughout. Recorded or played audio files should be TRUSTWORTHY now,
regardless of audio driver period size.
- Tested extensively with many configurations. Should be OK for usage trials.
- Works OK with plugins that report latency (properly). It accounts for their latency.
- Works OK with Audio Output track sends or Midi output sends and Audio Input returns.
- Works OK with 'Bounce to file/track' function, with or without Jack Freewheel enabled.
- TODO: Support Aux(illiary) tracks. Not handled at all ATM.
Fix small snippet of missing sound at start of all playback material. Should be
played BEFORE transport rolls. Use 'slow-sync' feature to hold up the transport.
Add user-adjustment boxes on hardware ports. (Enter results from jack_iodelay for ex.)
14.05.2019
- Include RTC support only if ALSA support enabled. See issue 584 (BSD support). (Tim)
- Fix for github issue 646 "Select Directory" dialogs freezes MusE. (Tim)
For a known Qt bug: QFileDialog freezes with a Gnome environment.
In the bug report, a user said he fixed it by NOT supplying a parent. That is what I did.
- Fix problem with loading lv2 presets on '<More...>' popup menu pages. Reported in forums.
- Some fixes submitted for BSD support:
Remove all dlopen() RTLD_DEEPBIND usage. Add some missing headers.
- Users must now specifically set cmake option ENABLE_LV2_SUPPLIED to use built-in
LV2 libraries, we will NOT automatically fall back to them now, to avoid problems.
- Fix confusing DSSI and OSC cmake warning messages, per issue 655.
01.05.2019
- Fix quantize dialogs in pianoroll, arrangerview, scoreedit. Regression at 21.01.2019 (Tim)
12.04.2019
- Fixed midi import problem as reported in forums: (Tim)
Importing tracks with duplicate (often blank) names caused problems with
'drum_ordering' and 'route' song file sections since they refer to track names.
Re-wrote to use track indexes instead of track names.
Optimized and compacted the 'drum_ordering' section.
- Added new Arranger column 'Track Index'. Helps identify blank or duplicate track names.
- **Bumped up** song file version to 3.2, necessary for the new track header column.
- Added Track::displayName() and Route::displayName(). They return strings such as
"1:Track 5" and "2:" "3:" to help identify tracks.
All places displaying a track name, such as routing popup and dialog, now show
this 'augmented' display name to help identify blank or duplicate track names.
- Fixed many semantic, code-will-never-run, allocation, header-not-guarded,
and other problems as displayed by KDevelop Problems Reporter.
- Fixed Midi Input Transformator and Midi Transformator problems.
Problems creating/deleting presets. Tested all functions OK.
25.03.2019
- Fix issue 645 "Naming a track with acentuated letter". (Tim)
Oops, regression from 07.01.2019: utf8 chars were corrupted.
Reverted by re-adding QByteArray stuff, required for proper parsing.
- Also fixed many double & in *.idf files and a few other things.
- Fixed bug in storing sysex comment xml section of midi instruments.
It was doing escape replacements twice, corrupting the text.
24.03.2019
- Fix Time Signature boxes on toolbars: Could not adjust if 'use mastertrack tempo' was off. (Tim)
Oops, regression from 22.04.2018
23.03.2019
* Metronome super-makeover: (Tim)
* New metronome accents editor with factory and user presets:
- Choice of global vs. song metronome settings.
- Re-design metronome dialog, separating into tabs.
- NOTE: Qt signal/slots macros are OBSOLETE!
Implemented first usage of Qt 'connect' functors and C 11 lambdas, in metronome dialog.
Strange, some Qt classes don't seem to have functors? (QCheckBox, QComboBox.)
11.03.2019
- Fixed build issues for vanilla Debian 9 (rj)
10.03.2019
- Fixed regression with storing decimal values in song file, they
were using locale's decimal type, now stores with decimal point (rj)
03.03.2019
- Fix LinuxVST duplicates in plugin list if duplicate plugins exist. (Tim)
02.03.2019
- Plugin scanner: Redesign fixes problems with 'auto-rescan' trigger. (Tim)
Significant changes: Previously folders were scanned for date/time differences
compared to the cache file's date/time. This caused unwanted rescans if ANY
file or folder inside changed. Now it is all *.so file centric. Now, ALL *.so
files found are registered in our caches, and a new 'file timestamp' member
was added, and a new "unknown_plugins.scan" cache file added. Then on next start
it compares date/time of what exists in our cache with what is actually on the system.
- Fixed remaining compile issues with various options disabled.
Tested by turning off ALL cmake options. Revealed an error: We never linked
pthreads into the core! With cross-platform in mind, this was followed:
https://stackoverflow.com/questions/49768454/whats-the-differences-between
-pthread-and-pthread-options-in-cmake (the 'modern' answer at bottom).
01.03.2019
- Added README.editor-shortcuts with keyboard shortcuts for midi and drum editor (rj)
- Extended plugin scan wait time to 9 seconds, needed by Addictive Drums 2 atleast (rj)
25.02.2019
*** MusE 3.1.0pre1 ***
- Added cosmetic highlight lines in arranger for every numbered line (rj)
- Added shortcut for renaming a part (rj)
- Added a text filter to the shortcut dialog (rj)
- finally start preparing for 3.1 (rj)
19.02.2019
- Issue 639: Make 'midi remote' dialog box more clear. (Tim)
- Fix M_PI from last commit. Don't detect in cmake, hard-code #ifdef M_PI for now.
17.02.2019
- Fix all uses of exp10(). (Tim)
exp10 is now detected in the main cmake file, and defined as pow(10,x) in muse_math.h
if it is NOT found. All relevant places using exp10 now have the muse_math.h
header instead of <cmath> or "math.h".
- Fix compile breakage if DSSI support not enabled.
Oops, fixed scanDssiPlugins() in plugin_cache_writer.cpp and oops, removed
duplicate "void initDSSI() {}" from alsamidi.cpp (how'd that get there?)
- M_PI support now detected in main cmake file.
- All inclusions of math.h and cmath have been replaced with muse_math.h
to make muse_math.h a 'central hub' for special defines.
16.02.2019
- Fix Issue 640: wavecanvas.cpp use QProcess not fork() et al. (Tim)
08.02.2019
- Revert usage of QRegion stl features (too new at Qt 5.8). (Tim)
07.02.2019
- Updated all PyQt4 based midi scripts to use PyQt5 (rj)
24.01.2019
- Stop heartbeat timer in Audio::stop(). (Tim)
Possible random crashes closing a song and loading another song.
Observed a few times in mixer strip timer handlers. Not sure how
(it's graphics thread), but in case something during loading
runs the event loop or something, this should at least not hurt.
21.01.2019
- Merge from selection_fixes branch: (Tim)
* NEW! Midi controller graphs copy/cut/paste and drag/drop:
- See README.usage for new info about how it works.
* Mixer strips added to Drum and Wave Editors:
* Massive graphics, canvases, cut/copy/paste/drag/drop workover:
- New: A few dozen lossless 'agnostic' (regardless of magnification)
graphic routines in class View.
- Entire graphics chain from class View all the way through to the
editor classes has been reworked. Many lines, dots were missing etc.
- Update regions as well as rectangles are now passed to most routines.
- Lasso fixes: Simply drawing a large lasso rectangle can take much CPU%!
So a new mechanism to draw a thin four-sided lasso REGION was added.
So far added to Arranger only. CPU% is much better now.
- Copy/cut/paste mechanism is now designed to be more WYSIWYG, to avoid
operating unknown to user on selected items in some other out-of-view window.
- Midi controller graphs no longer wait for sync with audio cycle upon each
item drawn by the user. This was painfully slow with large audio buffer sizes.
19.01.2019
- Merge pull 634 "Run properly on HiDPI screens" from hfiguiere. (Tim)
Modified slightly, to check Qt version.
07.01.2019
- Xml class full makeover. (Tim)
Removed all QByteArray stuff. Now it works directly with _s1 or _s2,
which cures concerns about deep copying the b.a. back to _s1/_s2,
stuff which was hastily added at Qt4 to make it work.
Tightened up several of the routines.
06.01.2019
- Scanner: Replaced silly stdout stuff with QTemporaryFile. (Tim)
- Class Xml now supports directly reading and writing a QIODevice
and writing to a QString, instead of requiring a FILE*.
- Using the above, eliminated two usages of fdopen().
06.01.2019
- Fix plugin scanner bug reported by artofmusic in forum. (Tim)
Some plugins may output stuff on stdout. This was confusing
our xml scanner. So a method of separating our xml from the
rest of stdout was added. Tested OK with LinVst and sforzando.
19.12.2018
- Fix fluidsynth fluid_synth_error() deprecated in 2.0.2 (Tim)
- For bug 632: Fix slight text error in Global Settings option:
Now reads "Ctrl right click sets left range marker".
07.11.2018
* NEW! Safe Plugin Scanner version 2: (Tim)
- The plugin scans are cached now, in ./config/MusE/scanner.
This means faster startup time since it no longer has to
rescan each time.
- Deicsonze and SimpleDrums MESS synths load muuuch faster
now since each instance no longer has to scan plugins.
- New command line option -R forces rescan.
Also new 'Force rescan' checkbox under plugin paths tab
in Global Settings dialog.
- Automatically detects changes in any of the plugin paths
given in Global Settings dialog, and rescans.
- Added Ladspa RDF (lrdf) support. Initial support for now.
- More major rearrangements: Moved several module libraries
out of the muse tree into the libs tree, since they stand
on their own.
Created new libs folder 'plugin' containing all of the
plugin scanning and caching code.
Awl and AL libraries are now fully separated and isolated
from the main app. Awl is NO LONGER linked in with the
main app, only with the Deicsonze MESS synth. Yay.
20.10.2018
- Oops, fix previous fix of 19.10.2018 (Tim)
Move function_dialogs folder out to muse folder.
Re-order the cmake subdirectory list so that things get built first.
- Fix freeze or crash in Xml::parse() under certain conditions
with corrupt files.
19.10.2018
- Moved complex 'widgets' to new folder 'components'. (Tim)
New library 'components' separated from 'widgets'.
- Finished completely isolating libraries AL, AWL, and widgets
so that Deicsonze and SimpleDrums MESS synths load now.
- So things are even more modular now for less unresolved dependencies.
17.10.2018
* NEW! Safe Plugin Scanner 'sandbox': (Tim)
- MusE should NEVER crash due to plugin scanning at startup now!
- All LADSPA, MESS, DSSI, and LinuxVST plugins are each scanned
in a separate QProcess program upon MusE startup.
Those that fail are NOT INCLUDED for further use.
Currently the QProcess communicates back to muse via
an xml-encoded text on stdout.
But this could change to shared memory.
(Hint hint: Grow into an actual plugin run-time sandbox host!)
- All items in globaldefs.h that were in the global namespace
are now part of MusECore namespace, including MIDI_CHANNELS
which was a #define.
- Added command-line option -S (Don't load MESS plugins).
- Fixed crash in Deicsonze: Failure to initialize lfoDelayIndex.
09.10.2018
- Fix bug 629 by mqnc: Meta events (lyrics) not imported. (Tim)
Lyrics few other metas were ignored in buildMidiEventList().
11.09.2018
- Fix compile bug 635 by Pablo Tassi: "invalid conversion from
‘unsigned int’ to ‘Qt::WindowType’ in vst_native.cpp at lines
1520 and 3607. (Tim)
11.08.2018
- New: SongChanged flags are now a structure with extra info. (Tim)
Introducing SongChangedStruct_t. SongChangedFlags_t is now a
member of that structure. New member 'subFlags' holds optional
extra bits (we're running out of SongChangedFlags_t bits) which
are intended to be a 'sub flags' NOT an extension of flags bits.
New member 'sender' should ease a long-time problem of how to
ignore self-generated SongChanged signals feeding back to an
object with no way to know if they were self-sent. Unused yet...
- Fix accidentally broken Arranger cut/paste on 07.08.2018
09.08.2018
- Fixed compile error when using internal LV2 support. (Tim)
System LV2 include paths were being included, taking priority,
fixed in top CMakeLists.txt file.
- Fixed internal LV2 lilv state.c new_state_from_model() (Tim)
I found state->dir should be a file path, not a URI.
Symptom: With linuxsampler LV2 plugin for example,
the filename sent to it was wrong, it was a full URI.
Prepared a patch for submission to LV2, pending testing the fix.
- Fixed internal LV2 compiler warning "unneccessary parentheses"
treated as as error in LV2 util.h LV2_ATOM_OBJECT_FOREACH,
LV2_ATOM_OBJECT_BODY_FOREACH, LV2_ATOM_SEQUENCE_FOREACH,
LV2_ATOM_SEQUENCE_BODY_FOREACH, and in lilv.h LILV_FOREACH.
07.08.2018
- Menu cleanups, rearrangement. (Tim)
Moved several Edit menu items to the Functions menu.
Moved Mastertrack menu items over to View menu since they
don't have much to do with editing tracks or parts.
Eliminated Automation menu. Moved all those items into Audio menu,
since they're all audio related.
As requested: Added a Close item in the File menu. Currently it
does NOT clear the midi devices and ports, they remain as last set.
Added File Save As and Application Exit icons.
Changed name of 'MusE Settings' menu to just 'Settings'.
Added new checkbox in Appearance Settings: "Use theme icons if available",
which activates a dormant feature of using theme icons if they are found.
05.08.2018
- Further LV2 GUI fixes - see 29.11.2017. Fixed X11 GUI size. (Tim)
For example DrumGizmo should open OK and not be allowed
to shrink below its supplied size.
01.07.2018
- Fix non-functional mouse wheel in Canvas::wheelEvent(). (Tim)
Broke with fixes of 15.12.2017. I tried to repect what that fix did,
hopefully works OK with either touch pad (I don't have one) or mouse wheel.
Increased step size slightly from 40 to 50.
26.06.2018
- More fixes for newer gcc warnings treated as errors. (Tim)
Oops. Fixed some funny business with memcpy in DeicsOnze::initPluginDelay().
Oops. Fixed missing switch/case breaks in Slider::setOrientation().
Bump up required RtAudio version to 5.0 and fix wrong include statement
in rtaudio.cpp from rtaudio.h to rtaudio/RtAudio.h
Attempt to fix warning (error) in lilv.h: "error: unnecessary parentheses
in declaration of ‘i’ [-Werror=parentheses]". Can't seem to suppress this,
was forced to turn lv2host.cpp/h into a separate module with its own
-Wno-error compile flag. Tested OK with muse built as static modules
or normal build. Bit of a hack, could it fail if something else includes
lv2host.h first before the module is compiled?
28.05.2018
- Added missing #includes needed by newer Qt >= 5.11 (Orcan)
10.05.2018
- SimplePlugin system: More improvements. (Tim)
Various changes. Added Plugin::createPluginI().
08.05.2018
- SimplePlugin system: Some improvements. (Tim)
After scanning, all plugin libraries are CLOSED until instantiated.
When all instances are freed, existing behaviour remains: Library closes.
New class LadspaPluginI derived from PluginI which is a base class now.
SimplePlugin system remains modular. WIP: Lv2Plugin, Lv2PluginI, others.
06.05.2018
- SimplePlugin system: Rearranged sampleRate, add segmentSize. (Tim)
30.04.2018
- RtAudio, dummy driver fixes if realtime scheduling NOT available. (Tim)
Symptom: "...processTrackCtrls *** Error: evframe:123 < frame:299.."
Cause: Two variables - time at cycle start, and frames at cycle start -
were updated at different times in the audio device callback, causing
timestamp requests to be wrong.
Cure: The variables need protection in the callbacks when no realtime
scheduling is available. Added a 'flipping variable buffer' scheme
where all the variables are updated at once.
- Submitted a patch to RtAudio project, to enable realtime for Pulse.
22.04.2018
* Fixes to Master Track functionality, and Transport mini-makeover: (Tim)
- Fixed: Was impossible to adjust static tempo when Master Track disabled.
- Removed superfluous tempo and sig boxes from Master Track Graphic toolbars.
- Enabling external sync no longer forces Master Track off.
- Added Master button to Tempo toolbar in all windows. Tempo box now obeys it.
- Replaced Transport tempo and sig boxes with editable spinbox versions.
- Fixed Transport controls' widths causing too-wide Transport!
- New Transport buttons and SVG icons.
10.04.2018
- Small important fix: Auto-connect metronome to first audio output track. (Tim)
When a new AudioOutput track is added, it checks if it is the only one
and auto-connects the metronome to it. Also, template files having an
AudioOutput track have been changed. This should make metronome "just work".
08.04.2018
* Major fixes to long-standing fundamental midi timing errors: (Tim)
- Symptoms: Midi event times were often wrong, much worse with smaller audio
periods. Caused jitter on almost every event, the events were booted into
the next cycle when they should have been played in current one.
- Floating point math has been BANISHED from ALL timing functions including
midi, sync, wall-clock, jack time etc.
Instead, large-integer math is used. Where 128-bit is required, the
3rd party libdivide library is used for compatibility reasons.
In functions which convert from a low resolution value to a high one,
rounding-up is used (NOT round-to-nearest). For example, tick to frame
is rounded up but NOT frame to tick. This ensures a one-to-one
correspondence between frame and tick. Similar with MTC <-> frame calcs.
- There was a fundamental problem with how we schedule midi events for playback,
including metronome. We compared the midi event ticks with the current
tranport frame range converted to ticks. This is backwards and inaccurate.
It now converts the midi event ticks to frames and THEN compares with the
current transport frame range. This is much more accurate and correct.
- TESTS: Precount and metronome with a tempo of 125 or 120: Timing is perfect,
no missed events. With a fractional tempo of 130.55: Timing is perfect,
event times are 'decimated' (staggered) to account for the fractional part.
With a wildly varying hand-drawn tempo map: Observed that all song bars do
show as X.0.0 when on the bar. Was not working well before, due to losses.
Unrelated fixes:
- Added transport seek anti-flood mechanism. (Tim)
Symptoms: When cursor was moved around, there would often be a 'flood' of
repeated events as the 'snap' position competes with user-dragged position.
A small fraction of a second delay was added after the cusrsor stops moving
before the engine plays any more events.
- Added precount 'Precount on play' and 'Mute metronome' features. (Tim)
Precount on play allows precount during play mode. Mute metronome mutes
the metronome after precount, this is handy if only precount is desired.
- Fixed compile error when ENABLE_LV2_GTK2 is disabled. (Tim)
21.02.2018
* PRECOUNT feature lives! : (Tim)
- Restored dead precount feature.
- It uses the 'slow-sync' feature of Jack Transport (and ours).
- Moved our 'dummy' transport feature from Jack module into
base class AudioDevice. This means ALL our drivers support it now.
- It means ALL the drivers support precount.
- Added README.metronome which explains a few things. Read it!
30.01.2018
*** MusE 3.0.2 ***
29.01.2018
- Silly but very severe bug fixed with selecting midi device for newly
created midi tracks. Looking for the last created midi device started
out of bounds, instant crash when built for release (rj)
28.01.2018
- Fixes for #604: muse 3.0 fails to build: many undefined references. (Tim)
Packagers wanted to use -no-undefined linker flag. But this also requires
our own -DMODULES_BUILD_STATIC. The fix of 14.01.2018 fixed the main app,
but all the MESS synths still failed to build.
This MAJOR FIX rewrites all the plugins and some main app stuff, so that
there are NO unaccounted dependencies and the two flags should work.
Overview: Several complete core objects and several declarations/definitions
were seperated from the core to their own modules or header files:
sysex_helper_module memory_module evdata_module mpevent_module
wavepreview_module xml_module, and midictrl_consts.h, midi_consts.h
These modules all build SHARED regardless of MODULES_BUILD_STATIC.
Several of the MESS synths directly used core components. Eliminated now.
A huge remaining problem was Deicsonze synth directly used the core's
plugin system (eek!), while SimpleDrums used its own plugin system.
So a new common SimplePlugin library was built. It is similar to our
main app plugin system but simplified for LADSPA, yet still has
instance reference counting and auto-library-close.
Both Deicsonze and SimpleDrums now use this library instead.
(It is an interesting 'clean' plugin system from the ground up. Would be
good to build upon this library to replace the main plugin system!)
TODO: There is a flaw in how our plugin systems connect 2-1 or 1-2 ins/outs.
TODO: There are still a couple of ugly but harmless dependencies, such as
some synths depend on our widgets library but only depnd on widgets which
don't depend on other things, and one synth depends on WavePreview.
23.01.2018
- Added an appdata file. Distros want it these days (Orcan)
17.01.2018
- Added ability to /not/ specify a default out, instead a created midi track
defaults to the port with highest number (usually the last created)
this is also the default behaviour now (rj)
16.01.2018
*** MusE 3.0.1 ***
14.01.2018
- Moved structure.* into muse/arranger/. -DMODULES_BUILD_STATIC=TRUE should
work now. (Orcan)
- Print out note name on events in Pianoroll
possibly this should be a setting (rj)
11.01.2018
- Fixed looping not playing first note in loops since 17.12.2017. (Tim)
Was a line in MidiDevice::handleSeek() I was not sure of.
- Fixed midi sustain controller problems since 17.12.2017. (Tim)
Sustain was not handled right, and was being reset to zero.
08.01.2018
- Fixed build against newer gcc (4.5 with c 11 enabled) and glibc 2.27 (Orcan)
08.01.2018
- Oops! Fix #602 Wave tracks lose sync if muted / unmuted. (Tim)
Slight rework of WaveTrack::getData().
TODO: Same thing happens if clicking track off/on.
06.01.2018
*** MusE 3.0.0 ***
Final release of MusE 3.0.0
- Changed remaining toLatin1() into toLocal8Bit() for fluidsynth path operations. (rj)
05.01.2018
- Merged feature from Michael Oswald, Mid transformer support for (rj)
randomizing event
04.01.2018
- Fixed Zynaddsubfx LV2 not working in Muse (#599) (Tim)
(X11UI ui type would not show after the first show, and looked ugly.)
Used QMainWindow instead of QWindow for X11UI LV2 ui type.
Added a flag state->uiIsOpening which forces the gui update timer
to re-send all controls and program to the gui upon re-opening in
LV2PluginWrapper_Window::updateGui LV2Synth::lv2ui_SendChangedControls.
02.01.2018
- Fix fluidsynth not loading font although it shows valid filename. (Tim)
Out-of-scope QString byte array constData in LoadFontWorker::execLoadFont.
01.01.2018
- Ported QThread and removal of QSocketNotifier from
platformindependence branch (rj)
- Removed Gui calls from nongui thread of fluidsynth plugin (rj)
as they caused a lockup.
TODO: The gui calls were there to handle when a soundfont was
not found, to be able to load an alternative. Currently
the fonts are omitted silently, a better solution should be found.