-
Notifications
You must be signed in to change notification settings - Fork 68
/
ChangeLog
7692 lines (7601 loc) · 484 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
594
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
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.
- fixed regression, context menu for tracks had vanished (rj)
- Some attempts to fix 'global cut' crash. Working on it...(Tim)
- New SVG icons for transport stop, play, ff, rew, rew-to-start. (Tim)
31.12.2017
- As requested: Track monitor now works regardless of track mute. (Tim)
Allows to listen to input while muting playback material.
Note that turning a track off, or 'proxy muting' it will still
mute the track.
- Fix monitored midi output on wrong channel. Editing error from 17.12.2017
- New master record icon, dual-state red LED style.
- Missing ifdefs for RTAUDIO, build patch from Dennis Schulmeister added (rj)
- Moved instantiation of Add Track Menu so it is only done once (rj)
29.12.2017
- Revert some new undo stuff and replace with pending operations. (Tim)
Undo was behaving oddly for things like mute, rec, monitor, off etc.
27.12.2017
- Jack is now the default audio device selection. (Tim)
If that fails, it tries rtAudio with Pulse, and if that fails,
the dummy driver.
24.12.2017
- Oops! Fix years-old bug preventing a just-moved part from sounding. (Tim)
The MovePart undo/operations were not properly erasing/reinserting
the part because they were passed null track and oldTrack.
For ex. if a wave part was moved before another wave part, it
looked OK on screen but it did not sound.
- Reverted small piece of code that made song dirty too sensitive.
- TODO: Revert a few places, causing some undo operations to be
included in undo/redo history when they weren't meant to be.
- Added sample-rate change according to song file when using RtAudio (rj)
as backend.
- Removed the RtAudioJack option, brings trouble and can't find any (rj)
reasonable use for it.
23.12.2017
- Some fixes to rtAudio support. (Tim)
Fix compile error on unknown 'DummyAudio'.
Automatically chooses nearest lower sample rate if requested
rate is unsupported. Prevents freeze in MusE msg system.
If driver cannot be started, it warns with a message box but MusE
still runs so that user can change the driver.
NOTE: If system is not set up properly, selecting Pulse backend
while Jack is already running may cause MusE to freeze. Likewise,
selecting Jack backend may cause Pulse to pause.
22.12.2017
- Added backwards compatibility hack for Splitter, (atleast some) old songs
have only two splits for the arranger, so we inject a third to mimic
tree splits (rj)
- RtAudio with PULSE AUDIO backend is now default. (rj)
Rather drastic change but it should make it much easier for new users.
TODO: Display the current audio driver somewhere in the UI
- Harmonized audio device selection so they are all available in the
config dialog, midi only still can be selected with -a and
RtAudio+Pulse can be selected with -t (rj)
19.12.2017
- Enabled basic stereo input support (rj)
- RtAudio buffer allocation rework (rj)
- Make RtAudio fallback instead of dummyaudio if jack isn't recognized. (rj)
18.12.2017
- Fixed horizontal scrolling with shift, again (rj)
- Wired rtaudio to config dialog so backend device, buffers size
and sample rate can be set (rj)
TODO:
> Add proper output port support
> Add input ports
> Make config changes without restart
- backported build fixes in lilv/util.c from 0.24.2 to our version
to allow building without deprecation warnings (by default we treat
them as errors) (rj)
17.12.2017
* Substantial midi engine redesign: (Tim)
- Merge from engine_fixes_2017 branch:
- To ease working with multiple threads, new classes were developed:
MemoryQueue, and templates TypedMemoryPool LockFreeMPSCBuffer
and LockFreeMPSCRingBuffer. Pooled-memory SeqMPEventList was added
to compliment MPEventList.
- Midi device processing is now completely de-coupled from other threads,
using only MPSC Ring Buffers. It just does 'what it is told' now.
There is no more 'sending back' of midi controller values from midi
device process code to the audio thread - that was like a SERIAL manner.
Example: Previously a keyboard sent a controller, the audio thread picked
it up and sent it to an ALSA device where it's processed in the seq thread,
which then sets the muse hw midi controller representing it, and finally
the gui controls are updated with these values soon after.
Now instead, a keyboard sends a controller, the audio thread picks it up
and sends it in a PARALLEL manner to TWO places at once: An ALSA device
ring buffer where it's processed in the seq thread, AND a ring buffer
processed in the audio thread for setting the muse hw midi controller,
and finally the gui controls are updated soon after.
As one result, midi controls are now updated properly from automation
graphs - independently - whether the device actually got the messages,
or even if no device (<None>) selected for the port !
TODO: Now that we have MPSC ring buffers, I am hoping to allow ALSA midi
to shine, by taking midi input and bypassing the audio thread and
'directly' talking (putting) to other devices' threads. Eventually the
ALSA thread will 'collect' and process events completely independent
of the audio thread, autonomously without audio buffer size related delays.
- External midi clock sync: Complete redesign! Does not 'miss' recording
the first few notes any more.
There is no more pervasive 'duality' of processing midi in 'ticks' when
externally syncing vs 'frames' for normal tempo map use when not
externally syncing.
Instead, a brief external clock frame timestamp history is kept, and
ALL midi processing is done in FRAMES now, regardless of whether
externally syncing. Yay.
- Large System Exclusive (sysex) message support: MusE can now record
and playback very large sysex messages. Works great with ALSA.
TODO: Jack midi does not support large sysex recording.
- Some fixes to the 'retake' (restart recording) feature. Complete re-write.
Much more stable and realtime-safe now. But still slow with wave tracks.
- All mute, solo, and off controls make the song dirty now.
- Metronome fixes: Fixed silent metronome when any track was soloed!
Fixed metronome dialog: Not updating when song loaded.
Fixed non-realtime-safe reloading of metronome samples.
- Piano and drum list: No more slow waiting for audio thread when each note played.
Fast! Completely de-coupled by putting to the ring buffers instead.
- Several other smaller related and unrelated fixes along the way.
- Enhancements to midi port/device popup menu in track list + drum list. (Tim)
Sorted by device type now.
- New! Synthesizer tracks can change their port from the track list.
* Initial support for RtAudio - Pulse Audio sound output (rj)
For the moment severely limited
- only samplerate 44100
- only output stereo
- no input
15.12.2017
- Added support for track pad horizontal scrolling.
Involved adjusting scrolling constants and moving to pixelDelta() for
QWheelEvent, may need further adjustment (rj)
14.12.2017
- fixed track info drawing to be drawn correctly when using big fonts (rj)
04.12.2017
- Fixes to instruments, idf files, and sysexes. (Tim)
Fix error in Yamaha 9000pro idf file causing
"Cannot convert string to sysex r ct bn bt f7".
Several submitted idf files have F0...F7 enclosing sysexes, which was not
allowed, so to avoid changing them all, MusE is now more forgiving and
accepts enclosing F0...F7 in idf files and when editing sysex events.
03.12.2017
- PopupMenu and RoutePopupMenu fixes and touchups. (Tim)
Fix problems with <More...> submenus.
Sort and present midi device items by device type.
Slight rearrangement of title items etc.
02.12.2017
- Clear 'recently opened' file list upon MusE self-restarting. (Tim)
01.12.2017
- Further to 29.11.2017: Fixed LV2 synths + rack plugins position/size. (Tim)
NOTE: AFAIK we have no control over LV2 plugin 'external' windows,
only the ones where we create the window.
TODO: Same fix for MESS synths...
29.11.2017
- Bug #571 Plugin GUIs are too narrow: Fixed. (Tim)
Fixed generic GUI windows' initial position/size.
Fixed saving/restoring pos/size of generic GUIs.
Reported a Qt BUG #64773 regarding ignoring setting of position upon show()!
For said bug, wrote a MusE workaround. Tested all generic GUIs OK.
TODO: Similar fix for 'native' synth GUIs (where it supports it...)
TODO: Similar check and fix other non-QDialog usages for pos/size settings.
20.11.2017