-
Notifications
You must be signed in to change notification settings - Fork 71
/
ChangeLog
6929 lines (6838 loc) · 436 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
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
- Removed: Arranger 'Alt' button (and hidden Pianoroll) midi Trackinfo. (Tim)
19.11.2017
- LV2: Fix continuous "LV2SimpleRTFifo:put(): fifo is full" messages. (Tim)
Rewrote LV2EvBuf ctor: Can't just always call _buffer.resize() here,
which fills with items. Use reserve + assign(1) item for an output buffer,
and resize for an input buffer. Some plugins expose midi output sequence
ports even though they do NOT use them at all. This fix cures an oversight
which caused our receiving buffer to always be full in such cases, never
having a chance to be cleared by the plugin.
- Bug #572: Fix Alt+P crash with unselected regions. (Tim)
16.11.2017
- LV2: Fix bug #587 All Gtk-based guis crashing on close. (Tim)
Rewrote how we delete things on close.
05.11.2017
- Fix #592 MusE doesn't record some controllers. (Tim)
08.06.2017
- QString::sprintf is obsoleted. Changed most sprintf and all QString::sprintf to
QString::arg usage or similar code, or snprintf. Compiler warned of some suspicious
sprintf usage with not enough dest space. Fixed a few other compiler complaints. (Tim)
- lv2Gtk2Support module: Build with -Wno-error to avoid stopping on warnings. (Tim)
- Track list: Fix double error message box on track rename with duplicate name. (Tim)
06.06.2017
- More frozen MDI sub windows fixes. (Tim)
When style or stylesheet is changed in Appearance, warning now is 'changes don't
take effect until restarted'. Don't even attempt to set style/stylesheet if user
answers no to self-restart prompt. Moved initial setup of style/stylesheet in main()
from after muse->show to just after QApplication is created - now the only
place allowed to set them, except for hacks if 'Fix frozen windows' setting is on.
Note: Setting a stylesheet may still cause it to freeze. Working on the issue...
-------------------------------------------------------------------------------
[EDIT]: 29/11/2017 The 'frozen MDI sub window' thing was a KDE Breeze/Oxygen style bug.
Fixed upstream in recent versions with help from that team.
-------------------------------------------------------------------------------
03.06.2017
* GCC 7 fixes: (Tim)
- LV2 GTK2 support is now optional, due to a current exception breakage in gtkmm.
- Fixed many places using switch/case 'fallthrough'. With gcc7 these now generate
warnings which MusE treats as errors. I used 'comment warning suppressor indicators':
// FALLTHROUGH
- Fixed slight de-referencing problem in JackAudioDevice::portName().
26.05.2017
- Further to 22.05: [Sigh] More timer fixes: (Tim)
Info: Alsa HR timer now has hard-coded 1000 Hz limit, unsettable, unreadable :-o
As recommended by ALSA support, step through and try freqs as before.
Fixed div by 0 crash in ALSA timer if freq too high - set ticks to 1 if 0.
In view of the above, the RTC timer now takes priority. MusE tries it first,
and falls back to ALSA (typically the HR timer or else the system timer).
Updated README with modern info about setting up systems for timers.
- Bug #567 from Krzysztof Gajdemski: Older Qt: Build fails at QMetaObject::inherits().
Oops, remove line. Next line qobject_cast() will take care of it.
22.05.2017
- Oops, fix ALSA timer fix of 14.05 not working. (Tim)
From kernel 4.4.0-77, some weird default 1000Hz limit on HR timer frequency!
Step through several frequencies looking for the best one.
21.05.2017
- More mixer strip focus tabbing fixes, including strip-to-strip. Should be OK now. (Tim)
20.05.2017
- Oops, fix midi meters when midi sliders are in dB mode. (Tim)
14.05.2017
- Some work on ALSA timer. For ex. not working at all in openSuSE. (Tim)
TODO: More tests. Cleanups. Remove diagnostic printf's.
13.05.2017
- More frozen MDI windows fixes: (Tim)
Added option "General Settings > Gui Behaviour > Fix frozen MDI sub windows".
Move the theme and style stuff in MusE::changeConfig() into a separate
MusE::updateThemeAndStyle(). Many places call changeConfig, but only
a couple really needed updateThemeAndStyle().
TODO: Benign XCB connection errors may still occur. Remove diagnostic printf's.
24.04.2017
- Added Monitor track list column. (Tim)
- Streamlined and tightened up the record-arm and bounce operations. (Tim)
- Monitor on record-arm is on by default now, upon first installation. (Tim)
- Fixed a problem with arranger track resizing taking much too long with
many tracks and mixer open - added a separate SC_TRACK_RESIZED. (Tim)
- Bumped up songfile version to 3.1, so that incompatible binary header data
can be skipped, since a new Monitor column was added. Changed other files. (Tim)
10.04.2017
- Slight tweak: Don't allow the strips to gain focus. (Tim)
- Added new Czech translation from Pavel Fric. (Tim)
08.04.2017
- Crash fix: File > New > Audio.med > change wave track 1 to stereo -> crashes soon after. (Tim)
In AudioTrack::copyData(): In two sections concerning '2ch' -> '1ch' mixing: Move 'sp' inside
channel loop. Was allowed to increment beyond, into other variable data, causing silent corruption.
- Also, fixed template "audo.med": Both audio output track's outputs were routed to same jack port. (Tim)
- Slightly simpler track list solo icons. (Tim)
04.04.2017
* More routing and mixer relief: (Tim)
- New: As requested: Monitor on Record Arm option. Right click any strip, or Global Settings.
- New: Mixer strip volume/pan affect multiple selected tracks. Works fully with midi <-> audio strips.
Works in mixer and arranger, but purposely NOT in pianoroll to avoid accidental changes to other tracks.
Tally of things that currently can operate on multiple selected tracks:
Track list: Channel, port, mute, solo. Strip: Volume, pan, routing buttons.
- New: Strip keyboard focusing and operations: All strip controls now accept keyboard
focus. Strip volume box is now the default PROXY focus for all strips. Any strip control
having focus can be adjusted with up/down keys. Regardless of who has focus,
volume and pan always can be adjusted with universal keys.
Keys: Up/down: Adjust any focused control.
Alt + Up/down: Adjust volume regardless of focused control.
Alt + Left/right: Adjust pan regardless of focused control.
Ctrl + Alt + Left/right: Switch to a neighbouring strip.
Escape: "Get me out of this focused control to something higher-level!"
(Back to the arranger canvas, or the mixer window.)
- New: Show midi volume as dB option. Right click any strip, or Global Settings.
- To achieve midi volume as dB and support inter-strip increments, class MidiCtrlValList hwVal
member type was changed from INT to DOUBLE. Was required to support fractional increments.
- New: Midi strip instrument and patch labels respond to enter/return key to open popup menu.
- New: As requested: Strip name labels: Double-click to edit track name, or right-click context menu.
- New: Strips: 'Tabs' hold palettes of controls. Extra controls have been moved there from right.
The tabs accept keyboard focus and can be activated by hitting return/enter or clicking.
- Fixed: Yay! Finally the strip volume boxes have proper focus and mouse-over rectangles.
There is a dumb problem with KDE Oxygen and Breeze themes: They turn off ALL such rectangles
if the widget-to-font height ratio is too small. This required a HACK to force the
rectangles to be drawn. Fixed with new class LineEdit, now is base of class DEntry.
- Fixed: Strip labels now show colour with a stylesheet active. Looks good with dark stylesheets.
It was a problem with the order and way in which stylesheets were set. (And they override
fonts, so you can't SET then READ a widget font, it always returns what the stylesheet set.)
- Fixed: Strip volume scale drawing was offset too much to the left sometimes.
- Several other fixes along the way.
16.03.2017
- Draw the frame around all mixer strips. (Tim)
15.03.2017
* Routing and mixer relief: (Tim)
- Fixed auto-connect routing: Midi tracks by default now only connect to the first
suitable midi port input or output instead of all of them at once.
- Multi-selected tracks editing: New: Routing buttons apply to ALL selected tracks
ie. select two or more tracks and the routing buttons apply to each track.
The selected tracks must be type-compatible. TODO: All other strip controls.
- Added some SVG icons: Mixer window now scales almost perfectly to chosen font.
Moved 'Monitor' button to between 'Off' and 'Rec arm' buttons.
- New class IconButton replaces clumsy ToolButton and icon usage. Has TWO different
icon groups, perfect for our 'proxy' solo and mute.
- All mute buttons now show 'proxy' mute ie. when any OTHER track is soloed.
- All 'Monitor' buttons are now off by default.
* Bug fixes:
- Fixes for 'frozen' Arranger not responding:
NEW! Changing theme style in Appearance dialog automatically restarts MusE.
If a stylesheet is chosen, 'style' is forced to 'Fusion' for now until fixed upstream.
- Fixed duplicate events: From multiple tracks connected to the same inputs and output
if 'Monitor' was active. Protection from same-time events (only) in MPEventList::add().
- Fixed: Track ordering incorrect after deleting multiple tracks then undoing.
- Fixed: Big CPU % spikes when clicking almost anything in the mixer window.
Excessive redrawMixer() calls: Fix some controls/strip mouse handling: Accept, not ignore.
New specific SC_TRACK_MOVED flag replaces the more general SC_TRACK_MODIFIED when
moving tracks in Arranger or Mixer, and filter out other flags causing redrawMixer().
16.02.2017
* Recording from synthesizer midi output supported: (Tim)
- All synths are now marked as both readable/writable.
- Synths can now be selected as a midi input route.
- Received events from a synth will absolutely NOT be echoed back to the
SAME synth instance under any circumstances, even if 'monitor' button is on.
- Recording: buildMidiEventList(): Added protection from duplicate events
sent by certain broken plugins or malformed midi import files.
(Our 'live stuck notes' mechanism already protects from playing 'live' duplicate notes.)
- If output port's instrument has no note-off mode, do not use our 'live stuck notes'
mechanism. This allows for example drum trigger input devices sending NO note-offs,
although you must first select an instrument having no note-off mode.
14.01.2017
- Drum editor list: Added 'Set field', 'Set row', 'Set list' to right-click menu. (Tim)
13.01.2017
- Replaced midi editors' control panel knob with compact knob and LCD patch editor. (Tim)
Both use the 'waitless' method of 09.01.2017.
- Improvements to compact knob look and functionality. (Should look OK with 8pt font now.)
- Clear focus after LCD patch edit popup editor closes. FIXME There are three sections,
need to clear focus for now, we can't really have focus hanging around there for the
unaware user - need to add a section 'hilighter/selector'.
09.01.2017
- FIXED: Midi strip controls much too slow with large audio (Jack) period. (Tim)
- Created and installed new template class 'LockFreeBuffer<T>' to replace clumsy
per-type / fixed capacity multiple implementations. Works with ANY type, and
capacity can be set per-instance.
- Replaced 'waiting' calls of midi strip controls, with the new LockFreeBuffer<T>.
Midi controls are now fast and smooth, like audio controls, even at high Jack periods.
- TODO: Fix midi controller graphs much too slow as well!
07.01.2017
* New - Monitoring feature: (Tim)
- Midi Tracks and Wave Tracks have a 'Monitor' button.
Push to pass input through to output.
Midi Track 'Midi Thru' was re-branded and re-purposed as 'Monitor'.
- Meters: When in 'rec-arm' mode but not 'Monitor', meters are active.
Wave Tracks: NOTE: Be aware that when 'rec-armed', the meters show
the RECORDING levels pre-fader/rack etc. NOT post-fader.
This was a technical necessity, but actually has benefits: The user
can see the actual recording levels before the signal hits the disk.
- Since monitoring is important and can cause unaware unwanted mixing or
missing audio, the 'Monitor' buttons flash to indicate being active.
- TODO: Add an Arranger track list 'Monitor' column.
Make Wave Tracks NOT monitor by default ??
- FIXED: Wave tracks now mix playback audio with incoming audio -
you can now hear what's playing as you are recording.
21.12.2016
- Make some cmake system commands friendlier. (Tim)
- Remove some more old setuid stuff.
20.12.2016
- Removed libuuid dependency. Replaced with QUuid. (Tim)
Tested OK copying and pasting/cloning parts and notes (places using uuids).
18.12.2016
* ALSA support is now OPTIONAL ! :
* MusE can now be built as a PURE Jack application:
- Also fixed some problems with various config combinations of DSSI, liblo, and ALSA support.
Note: The smaller DSSI ALSA Compatibility package is NOT suitable for our DSSI support. (Tim)
17.12.2016
* Eliminated midi sequencer thread when ALSA midi driver is not enabled: (Tim)
When 'ALSA' button is not clicked in midi config dialog, MusE is running PURE Jack,
ie no sequencer thread (midiSeq), and no timer. Pure Jack.
16.12.2016
- Bug #520 by asbaklm: "Muse fails to start, produces stack smashing error": (Tim)
Further to Bug #548 fix 09.11.2016:
(Very old RTC timer was still causing it to crash upon the resolution request ioctl.)
Did looong overdue ALSA timer code rewrite. Picks best timer such as 1,000,000,000Hz HR Timer.
- ALSA Timer is now checked and chosen first over the RTC timer. RTC could still be chosen
as a LAST resort. Apparently RTC works OK for some users (not using DrumGizmo?).
15.12.2016
- Update: Fluidsynth MESS plugin GUI updates the song's maps when
soundfonts are removed or the channel or drum column is changed. (Tim)
- Besides drum patches, note sample names are now cached for ALL melodic
patches as well, they can be obtained although nothing uses them yet. (Tim)
14.12.2016
* New - Fluidsynth MESS synth plugin automatically shows correct drum note names: (Tim)
- No more manually loading a drum map file ;-)
- Load up some SoundFont(s) in the plugin, and try it out. Works with multiple
SoundFonts in different channels (be sure to mark 'drum' column).
- Automatically looks for libinstpatch-1.0 (from Swami) and uses if found.
- Door is open for our Instrument Editor to allow PER-CHANNEL drum maps,since
the system supports it now. You could add it manually to .idf files for now.
- TODO: Remove (L) (R) etc. from name strings. ie. find a better way to make
reasonable names out of multi-sample notes.
Does not update maps yet when fonts removed. Please toggle the track channel
or some other way force a map update manually for now.
- Thanks to Swami author 'Element Green' for help.
11.12.2016
- LV2 Synth Tracks: Fixed patch not changing when patch list popped up. (Tim)
Was simple change to include QVariant::UInt in *::patchPopupActivated().
10.12.2016
- Fixed lingering Arranger bug not restoring size properly on project reload. (Tim)
09.12.2016
* More 'New drum' track fixes. 'Old drums' invisible now, going soon: (Tim)
- Midi Instrument Editor: A default Patch Number is allowed now
(HBank = LBank = Prg = don't care). See GM instr for ex.
ALL drum map items are editable now including Hide, Mute, Channel, Port, Anote.
When 'Save' is clicked, song is updated immediately with changes to the instrument.
- Drum Tracks: Added Track Drum Map overrides. Right-click any map item to see options.
Channel, Port and ANote can be edited now.
- Added a standard GM drum map to our GM instrument, on the default patch (see above).
- Old midi export bug: Some controllers not exported! My typo: Changed 0x1000 to 0x10000
in exportmidi.cpp:addController().
- Midi Import/Export Dialog: Added two options for how drum controllers should be exported,
see their tooltips/whatsthis for more detailed info:
Apply drum map Port, Channel and ANote overrides
Drum map channel overrides go to a separate track
- Automatic conversion of loaded projects to use new drum tracks instead of old.
Warning: The project will be SAVED with NEW drum tracks!
- Old drum tracks hidden now. Will be removed later since they are no longer needed.
09.11.2016
- Bug #548 by funkmuscle: New DrumGizmo version 0.9.11 causes crash. (Tim)
Removed seteuid()/setreuid() code supporting ancient givertcap tool (kernel privileges).
Was interfering with DrumGizmo's use of semaphores.
TODO: Remove further old rtcaps code such as main.cpp:getCapabilities().
Tested OK so far, with self- or externally- started Jack, or dummy audio driver,
and as root user as well, and with Jack running non-realtime.
Note: This may also prevent things like our RTC timer code from accessing the RTC
as non-root, but RTC is old and should be replaced anyway, and it usually required
'poking' it beforehand in a terminal anyway - unless MusE is run as root which still
works as always.
30.09.2016:
* A fix for 'New drum' tracks!:
- Drum maps were not being updated according to track's current port and channel,
and current state of program controller. So a hook into the global heartbeat timer
was added and all drum maps are updated if necessary. Tested OK so far with
multiple parts open in Drum Editor, and changing various ports, channels, and patches.
NOTE: This means the Drum List can, and will, CHANGE DYNAMICALLY for example
with more than one program change in a part, or simply dialing in a new port, channel
or patch numer! TODO: Test + fix/improve/optimize more, and remove debugging messages. (Tim)
29.09.2016:
*** MusE 3.0.0pre2 ***
Second prerelease of MusE 3.0.0
- Bug #526 by jphaenlin: Crash on cut with scissors while master open. (Tim)
Seems old: In class MidiEditor: _pl (parts list) can be NULL, so protect the rest of the code.
28.09.2016:
- Completed Robert's mixer strip selection + keyboard navigation features. (Tim)
Now works in BOTH mixers A and B. Tested OK all functions.
Use the arrow keys and ctrl and shift to navigate strips and adjust volume and pan.
25.09.2016:
- Midi ports/synths configuration dialog: Allow multiple selections in device list. (Tim)
24.09.2016:
- Anti-alias the small routing channel circles. (Tim)
23.09.2016:
* Revenge of the knobs!:
- Complete re-design of mixer strips, reinstating knobs but much smaller and compact. (Tim)
- Switchable between knobs and sliders, via Global Settings or via right clicking any mixer strip. (Tim)
- Also switchable value display, to minimize clutter.
- Replaced clumsy three-slider midi patch editor with single-line custom LCD editor. (Tim)
17.08.2016:
- Bug by Martin Drautzburg: ALSA Midi controllers not working. (Tim)
- Bugs by Michael Oswald: Change 3 delete to delete[]. In LV2Synth ctor, free _nPname later. (Tim)
03.08.2016:
- Merged fix for bug where configuration storage had stopped working, from AndreeeCZ (rj)
- Updated templates to 3.0 (rj)
- Fixed color-theme switching no longer working (rj)
- Added another idf from Dennis Schulmeister, for Yamaha Motif XS (rj)
27.06.2016:
- Added instrument definition files from Dennis Schulmeister for:
* Korg Krome (Bank Map KORG).idf
* Korg Krome (Bank Map GM2).idf
* Roland-MT32.idf
* Lexicon-MX200.idf
* Yamaha-Rex50.idf
20.06.2016:
- Added connection between arranger and mixer so selecting a track carries over to the
mixer. Mostly a visual queue but some keyboard navigation and editing is possible (rj)
19.06.2016:
- Removed XML printout that warned of malformed xml, mostly due to the parser being
incomplete, still prints the warning when debug is enabled and when we are reasonably
sure it's wrong. (rj)
- Added keyboard navigation between strips in mixer. Ctrl+left/right to move between
strips. Up/Down to change volume slider (TODO add pan left/right) (rj)
- Strips can also be selected with clicking and ctrl+clicking to select more than
one. (TODO select strips from arranger too and allow to move all selected strips)(rj)
16.06.2016:
- Removed the ability to delete strips from the mixer, atleast temporarily, as it was
crashing (rj)
02.06.2016:
- Rolled back transport icons to previous version (the new version looked bad with some themes)
and made a new rec icon (rj)
30.05.2016:
- LV2: Fix playback crash with certain midi event times, in LV2SynthIF::getData(). (Tim)
- Midi file export: Added missing Aftertouch, PolyAftertouch support! (Tim)
28.05.2016:
- LV2, LinuxVST: Fixed Aftertouch, PolyAftertouch, Pitch improper composition. (Tim)
- LV2: Fixed sending redundant program changes with every small seek. (Tim)
- LV2, DSSI: Support 16384 Banks, arranged as two 8-bit-wide, 7-bit High and Low Bank values. (Tim)
- Thanks to Will Godfrey for reporting and testing with yoshimi.
21.05.2016:
- Fixed bug with ctrl+rightclick resize of notes no longer working (rj)
- Fixed shortcut for Pointer tool in right click tool menu (rj)
20.05.2016:
- Fixed bug with reversed Input/Output hidden in mixer menu (rj)
19.05.2016:
- Upon startup, Jack midi inputs/outputs are (finally) now paired together
into single MidiDevices just like the ALSA MidiDevices. (Tim)
How it works: If the DIFFERENCE between two Jack midi port names are EXACTLY
the words "capture" and "playback", or "input" and "output", or "in" and "out",
or finally "c" and "p", then the ports are considered a matched pair.
(The best names or aliases are picked, "system:" are avoided, similar to our
persistent port routes feature.)
16.05.2016:
- Updated lv2Support tree to latest versions. (Tim)
Instructions on how to do future upgrades added to lv2Support/ChangeLog.
- Added new cmake option 'ENABLE_LV2_SUPPLIED', to use supplied vs. system
lv2 support libraries (lv2, lilv, serd, sord, sratom etc). Default off. (Tim)
- Removed pre-built lv2Gtk2Helper libraries and folder. (Tim)
Replaced with lv2Gtk2Support folder, always built by cmake.
* Thus, GTK2 dev packages gtkmm-2, gtk+-2 are now REQUIRED for LV2 Gtk2 UI support.
- Fix compile stoppage warning if using Jack-1. The very old 'case 4: hack' in
processSync and JackAudioDevice::getState(). (Tim)
- Suppress unwanted Jack info terminal output. (Tim)
13.05.2016:
- Added instrument file for Classic Cantabile SP-250 / Medeli SP4200 from
Mariotte91 at fontenay.tk (rj)
29.04.2016:
*Important bug fix: About two dozen CORRUPT usages of QByteArray::constData(). (Tim)
In: routepopup.cpp lv2host.cpp helper.cpp dssihost.cpp jackmidi.cpp conf.cpp
vst_native.cpp minstrument.cpp
Symptoms could vary wildly. On my system MusE refused to load the config file.
- Fixed compile stoppage due to latest Jack obsoleting jack_port_set_name(). (Tim)
Created 'dlopen' function pointers for jack_port_set_name() and the brand new
jack_port_rename(), and arbitrated between them.
- Disable ElidedLabel auto-font size for now (midi strip instrument/patch labels). (Tim)
22,04.2016:
*** MusE 3.0.0pre1 ***
First prerelease of MusE 3.0.0
21.04.2016:
- New: Accu-Slider: All sliders support 'shift' control for single-stepping
even with thin sliders. (Tim)
The shift control changes from 'coarse' to 'fine' adjustment mode so
you can zero-in on an exact value even with very short sliders.
14.04.2016:
- Added missing Aux slider and Midi Program slider Appearance colours. (Tim)
- Complete rewrite of 13.04.2016. Non-modal colour chooser, fully interactive. (Tim)
- Do not save part colour names in colour configuration files. (Tim)
13.04.2016:
* New - Live colour editing and Colour Chooser Dialog in Appearance Settings: (Tim)
- All target colours are updated live in realtime. With functional Apply, Cancel, and OK.
12.04.2016:
- Implement meter colours from appearance settings. (Tim)
- Finish default colour scheme. (Tim)
- Fix obvious crash when loading another song: Do not connect songChanged()
directly to Arranger and Pianoroll trackinfo's Strips. Instead, the Strips'
songChanged() is called by Arranger and Pianoroll. (Tim)
11.04.2016:
(By Tim:)
- Completed (mostly) work on arranger, trackinfo, strip makeovers.
* New Appearance Settings:
- Several new 'Mixer' colour settings: Sliders, gain, pan, aux etc.
- New: Load and save colour settings. Share or backup your custom colours!
- New: Aliased small fonts for certain controls (brighter, sharper!),
with adjustable on/off size in Settings.
* New audio/midi mixer strip 'Component Rack' system, streamlined and unified:
- Configurable controllers, properties, and other selectable 'components'.
- Not quite ready yet, user-configurability hidden for now...
* New UI control functions:
- All descendants of SliderBase (Slider, CompactSlider, Knob, ThinSlider etc)
now support three adjustments 'modes':
Normal: Control moves with mouse.
Jump: Holding ctrl/middle mouse button jumps immediately to the value.
No-track: Holding meta changes the value only when mouse is released.
- Reworked automation rec/play functions to fully support these modes.
* Bug fixes:
- New: Discrete trackinfo panel parts have been replaced with a
unified class TrackInfoWidget, where classes WidgetStack, Scrollbar,
and TrackInfoLayout are combined into one widget.
Undesirable recursive things in the previous layout have been minimized
by using this container to hold everything.
- Full rework: Bottom area of arranger: Caused runaway width in some cases!
TODO: Drum editor has a similar sizing problem, difficult to shrink sometimes.
- Reworked Global and Appearance Settings dialogs to be smaller.
- Some other small fixes.
06.04.2016:
- Fixed show/hide menu choices in mixer for strips (rj)
- Remember last mixdown directory (rj)
24.03.2016:
- Changed lilv/lib.c: lilv_lib_open(): Added RTLD_DEEPBIND to dlopen() call. (Tim)
Fixes at least two Qt4-based external-ui synths (synthv1, drumk) crashing.
See corresponding UI dlopen call in LV2Synth::lv2ui_ShowNativeGui()
for a similar fix and test results (better but the UI still CRASHES here).
No other such plugins were found, in order to test this fix further...
- LV2: Fix very slow right-click synth 'presets' menu with many items (ex. amsynth). (Tim)
21.03.2016:
* New Plugin Path editor in Global Settings: (Tim)
The LADSPA_PATH DSSI_PATH VST_PATH LINUX_VST_PATH and LV2_PATH environment variables
are now read only ONCE upon first-time run, to fill the Global Settings boxes.
Afterwards these variables are SET (internally) by MusE at each startup, from the
paths in the Global Settings boxes, so that the various plugin systems can find plugins.
(Actually, LV2 /required/ setting LV2_PATH since we use the recommended lilv_world_load_all,
and there doesn't seem to be any other way to set the paths programmatically in that case.)
- Updated -h help text to reflect changes.
21.03.2016:
- LV2 fix: Support PowerOf2BlockLength - Was missing! Supports more plugins! (Tim)
- LV2 fix: Support FixedBlockLength - Our process routines weren't respecting this! (Tim)
If any controller input was adjusted, a plugin would 'gurgle' or might soon CRASH.
- LV2: Add debugging output (-D option) while discovering plugins. (Tim)
- LV2: Report if a plugin is ignored due to any unsupported 'required feature'. (Tim)
Tested OK! With MOD Pitch Shifter series of plugins (they require fixed-block AND power-of-2).
At both 1024 and 128 block size, these plugins' controllers responded smoothly, both with
rapid manual adjustment and graphs, and did not 'gurgle' and did not crash after much abuse.
19.03.2016:
- Fix toolbars initial positions in all windows. They were all on one line. (Tim)
Our shared toolbar system can now use a toolbar's objectName to /replace/
an existing toolbar, in MusE::setCurrentMenuSharingTopwin().
This keeps common toolbars in-place (by default) in all the windows,
especially as applied to the Main Window and the Arranger.
- Rebuild Tempo Signature and CPU toolbars to allow shrinking. (Tim)
- Fix problems with arranger minimum size and saving/restoring window sizes. (Tim)
14.03.2016:
* Arranger Track Info panel makeover: (Tim)
- Add midi strip (finally!)
- Add splitter handle for resizing the panel (finally!)
- Add 'Alt' button to switch between midi strip and old midi track info.
- TODO: Splitter initial default sizing issues. Saving/reloading should be OK though.
Also maybe some crashes. Massive cleanups.
12.03.2016:
- Fix routing popup menus consuming all CPU power upon mouse movement. (Tim)
In RoutePopupMenu::event(), removed "case QEvent::MouseMove". Seems to test OK without it.
11.03.2016:
- Make it slightly easier to recompile lvGtk2Helper library: Separate 32/64 bit makefiles
and automatic cmake choosing of user-compiled over pre-built version. (Tim)
09.03.2016:
- Converted python scripts to python3 and explicitly launch with python3 (rj)
- Fixed focus issue with running scripts, if launched from an editor, the editor
would be pushed back behind the arranger (rj)
08.03.2016:
- Project dialog put focus on name (rj)
- Punch in recording now works better when recording is started after the punch point. Live wave recording doesn't seem
to work though. (rj)
07.03.2016:
- Pianoroll: Make midi strip vertical scrollbar appear to the RIGHT of the strip, not intrude into strip. (Tim)
Similar to how arranger trackinfo scrollbar works. Much harder than it sounds:
Added new custom trackinfo_layout module. Moved class ScrollBar into its own module. Added Splitter::setPosition().
- Fix regression in MusE::readPart() causing not to re-open saved open midi editors. (Tim)
01.03.2016:
- Fix remaining audio engine bug from 31.10.2015: Certain routing conditions produced garbage audio output,
and pinned channel meters. (Tim)
Fairly substantial re-write of AudioTrack::copyData(), ::getData() and variants, especially input routing.
Removed AudioTrack::addData(). Cleanups of massive comments etc. Test OK with many multi-channel scenarios.
26.02.2016:
- Save state of: Routing preferredRouteNameOrAlias and routerGroupingChannels,
and routing dialog button routerExpandVertically. (Tim)
25.02.2016:
Plugin generic UI fixes, new features: (Tim)
- New: Class Meter now has orientation: Horizontal or Vertical.
- New: Class Meter now has scale markings (just like class Slider).
- Fix bug #470: Built-in MusE UI (such as LADSPA TAP Reverberator) not responding to controls.
- Replaced plugin generic UI ThinSlider with Slider.
- New: Plugin generic UI sliders have scale markings.
- Fixed backwards plugin generic UI output meters: Replaced VerticalMeter with Meter,
and enabled meter scale markings.
- Removed class ThinSlider and VerticalMeter from cmake build (but not from project).
- Related: Mixer strip volume sliders: Reinstate a 'thumb' knob.
24.02.2016:
- Remember the state of ALSA button in Midi Configuration dialog. (Tim)
It is a global setting, not per-song.
22.02.2016:
Merge from midi_engine_fixes branch: (Tim)
- Added MidiTrack 'stuck notes' and 'stuck live notes' lists and support.
For better handling of stuck notes for example when muted or rec-arm turned off.
- Split 'stuck notes' handling between devices and tracks.
- Removed midi instruments 'null parameters' setting, moved into General Settings midi tab as
'Send null parameters' checkbox, default is off. Removed the setting from all .idf files.
- Added General Settings midi tab 'Optimize controllers' (don't send dupl params or values). Default off.
- Finished note-off / zero-velocity work of 13.01.2016 (it required the live stuck notes list above).
- Apply midi track velocity/compression settings (and drum volume) to note-offs, not just note-ons.
- Removed 'curProg' members from SynthI, and no longer read or saved in song.
Replaced with MidiOutputParams struct in class MidiDevice. It holds current banks and prog,
and current (N)RPN parameters and data, to faciltate the 'Optimize controllers' setting above.
The current program settings for all channels are still stored in the song's MidiPort controllers.
- Added class MidiEncoder to handle all midi controller input encoding. (WIP)
- Added more latency functions to track and effects rack. (WIP)
17.02.2016:
(By Tim)
- Audio automation graphs fixes:
- Greatly reduced CPU usage while playing and graph(s) showing.
(Update only required rectangles and paint only requested rectangles - not the whole darn window.)
- Fixed flickering when moving mouse.
- Added drawing layers: Draw lines, then vertices, then text. With moderate transparency.
- Added shaded box for text, to stand out better.
- Vertex selection: Guaranteed to be able to select a vertex even in densely crowded multiple graphs.
- New vertices: Guaranteed to be able to add vertices to lines even in densely crowded multiple graphs.
Note that preference is now given to selecting/moving existing vertices over adding new ones.
The vertex 'hit' zone is such that if you really wanted to add another vertex to an already dense
graph portion, then you should zoom in more.
- Undo system fix in Undo::merge_combo():
if (this->combobreaker || other.combobreaker) // Flawed?
if (other.combobreaker) // Changed. Test OK.
- Audio automation graphs: Added Undo support. Smart Undo support using the above Undo fix.
Dragging a vertex around makes only ONE Undo step.
This is the first real 'editing' usage of Smart Undo using Florian's combo/breaker system.
Score Editor uses it for undo-able note selection. But there was a bug where it required two undo clicks,
and the above Undo fix seems to cure it now, one click only.
Another good example of Smart Undo usage (TODO): Editing the Track List channel column.
12.02.2016:
- Added instrument definition for Yamaha S30/S80 made by Dennis Schulmeister (rj)
09.02.2016:
(By Tim)
- Non-shared event lists followup: Wave event sndfile handles are now truly
unique - overlapping multiple compressed audio file instances will play
now instead of halting MusE.
TODO: When a wave part is edited, ensure other instances' caches are updated.
Note: The master sndfile list is now meaningless. (It now allows MULTIPLE instances of SAME wave file.)
It will either soon be REMOVED, or embellished/re-purposed. As will the Clip List Editor.
It is kept for now, so that the Clip List Editor can help debug what is going on.
- Fixed crashes when using wave editing functions. Possibly fixes recording spikes too?
- Close or re-open sndfiles in deleted or undeleted wave tracks/parts/events.
- Fixed part copying in Duplicate Tracks function. Dialog added new modes.
- Revert old: Do not auto-snap newly recorded wave parts to the grid. (Importing never did this.)
- Streamlined some complex multi-cycle operations (stopRolling, recordStop, deleteTracks etc.)
into single undoable operation lists (one cycle).
- Eliminated the (very old) brief total audio dropout on transport stop or rec stop.
- Fixed the (very old) audio FIFO underrun copious errors, at song load then play.
- Added undo of recorded audio automation controller events.
- Good speed ups to midi sustain controller real-time stop/start disabling/reenabling loops.
(Rearranged the loops - it was iterating all 200 ports x 16 channels).
- Still some related finishing work to do...
07.02.2016:
- Added widgets dependency on instruments, liste and deicsonze targets (Orcan)
06.02.2016:
- Fixed wave writing corruption when realtime wavedrawing was enabled (rj)
- Arm all selected tracks in the arranger when clicking REC (rj)
29.01.2016:
- add shortcuts for mute tracks (SHIFT+m) and solo tracks (SHIFT+S) (rj)
28.01.2016:
- print DSP load in CPU toolbar
- allow gain in channelstrip to attenuate also (rj)
25.01.2016:
- added midi drum name to simpledrums sample config (rj)
22.01.2016:
- raise config dialogs after apply to keep them visible (rj)
- removed startSong from the config in the default case
as we already know what should be there (rj)
- Pianoroll/drum editor: Ensure new events are selected. (Tim)
- Refix: Midi import empty tracks: Small revert. Test OK with user-supplied broken/fixed .mid (Tim)
21.01.2016:
- Midi import: Ignore empty tracks with zero data. Fixed corruption if so. (Tim)
- Midi import/export: Delete allocated memory.
*New: Midi export now has 'Use running status', and the instr/mode + port/device
metas can now be turned off for a 'cleaner' file.
- New wavedrawing mode (set to default) with drawing only a tiny outline of the wave (rj)
- DidYouKnow dialog now allows multiline help texts (rj)
- Several of the colors written to the config were not properly read back, now fixed (rj)
- Fix drum editor: In Canvas::findCurrentItem: Selecting notes required 2 clicks,
this also fixes dragging of selected same-time notes not dragging correct notes. (Tim)
20.01.2016:
- Fixed mixer crash when deleting track in updateStripList. (Tim)
- Fixed audio rack plugin problems: From README.effects-rack:
"For mono tracks with plugins having more than one audio input or output,
MusE uses the first input or output and ignores the rest."
This was not happening. It was using the second output. Fixed.
Optimization: When changing track channels: Previously we deleted all rack plugin
instances and rebuilt them. Now it only deletes or rebuilds what is necessary.
Fixed: A good side effect of the above is that rack plugin GUIs no longer
disappear when changing track channels :-)
Fixed: Multiple-instance plugin GUIs were being updated from the last instance's
control values. Now they are updated from the first instance (ie. 'left').
- Arranger fixes: Fixed problems with channel unwanted double increments.
Fixed problems with popup editors, click/doubleclick passing to parent,
for example channel editor box causing 'track lock' column icon to light.
*Arranger Feature - Multiple selected tracks common property editing:
- You can now edit a property and it will change all the selected tracks.
Currently works for track channel column and midi output port.
18.01.2016:
- Strips are raised when dragged in mixer (they should also get a solid background)
- When sorting mixer as arranger moving strips in mixer affects arranger also (rj)
16.01.2016:
- Added ability to rearrange mixer A and/or sync it to the arranger look
Features:
- Traditional look
- Sync to arranger
- Manually rearrange mixer with drag and drop
- Allow individual strips to be hidden (re-enable them from the view menu)
Still bugs to iron out and allow mixer B to also work (rj)
08.01.2016
- Fixed icon pos for transport toolbar (rj)
15.01.2016
- Routing popup menu: Fix stereo grouping mode not connecting both channels
if second channel is clicked. (Tim)
14.01.2016
By Tim:
- System-wide accuracy fixes, part 1:
Enforcement of audio controller double-precision floating point accuracy internally,
all the way up to the lowest-level structure Port (in plugin.h). Port now has a double value
besides the existing float value. All track, plugin, and synth code changed to use double-precision
wherever possible (only Track can take advantage of double - plugins/synths only use floats).
- Due to inaccuracy in log*() functions, muse_math.h was added where special macros are defined for:
muse_log10r() and muse_val2dbr() (round to the nearest .000001), and muse_db2val().
These use log10 and pow10. Some critical code will use the poor-accuracy fast_log*() functions
in fastlog.h for speed, while other code takes advatage of (requires) our more accurate macros.
- Audio strips: Ensured and verified accuracy and round-trip consistency of vol, aux, gain sliders
and labels, and their controllers.
Fixed strip slider problems honouring Settings 'Slider minimum value'.
This value now means 'off' or 'muted' (-inf dB), not some value below it like before. Test OK.
13.01.2016
By Tim:
- More note-off fixes related to 21.12.2015: Added Instrument Definition Files NoteOffMode attribute.
Enforcement of internal note-off velocity usage, and no internal midi Event zero note-on velocities.
- Fixed old -l locale switch problem by adding QLocale::setDefault();
12.01.2016
By Tim:
- Mixer makeover in progress:
- Replaced strip knobs with horizontal sliders.
- General redesign of strip look and sliders.
- Strips are expandable now with a right-edge 'handle'.
- Fixed old mixer problem with unpainted areas (solved by QWidget::setUpdatesEnabled()).
06.01.2016
- Added 'clipper led' to mixer's audio strips (danvd)
02.01.2016
- Added Native VST FX support (rack insert plugins) (danvd)
27.12.2015
- Midi Instrument Editor: Fixed errors from ancient missing Qt3 signals.
Fixed problems with instrument / patch / controller lists. Tests OK now. (Tim)
21.12.2015
- Rewrited midi events code for lv2 host. Fix for #435 (danvd)
13.12.2015
- Added support to resize notes and parts to the left with pencil tool (issue #292) (danvd)
11.12.2015
- Added LV2 UI open behavior (danvd)
06.12.2015
- Added live update of wave parts while recording (danvd)
03.12.2015
- Added Native VST shell plugins support (danvd)
03.12.2015
- Added non-discard restart recording function (a-la multi-take, SHIFT+space is default shortcut) (danvd)
01.12.2015
- Added recording restart function (CTRL+Space to activate while recording) (danvd)
21.11.2015:
- Auto resample imported wave files to project's sample rate (danvd)
18.11.2015:
- Added double click on Port column to open the gui of a synth (rj)
31.10.2015
By Tim E. Real:
* New routing capabilities:
- New: Persistent routes: If a device disappears (say USB Midi) we remember it.
Currently works for Jack audio and midi routes.
TODO: Expand concept to include persistent Synth Tracks, Rack Plugins and Tracks.
- New: Multi-channel Audio Track routing. Any channel to any channel.
Fully functional (although maybe a sound engine bug - an unconnected
channel may have repeating nonsense sound data.)
Audio tracks still only have up to two channels (or N synth audio channels),
but this feature may help later for true multi-channel Audio Tracks.
Users connect individual Audio or Midi channels with 'Channel Routes',
or all at once with 'Omni' Routes (similar to previous behaviour).
- New: Graphical Routing dialog redone and enhanced. Almost complete.
Added to routing popups as "Open Advanced Router".
Middle Connections View window, which can be scrolled.
Thick lines are Omni Routes and thin ones are Channel Routes.
Each pane's tree has textual Omni nodes, plus some have a
'Channel Bar' sub node (an array of connectable Channels).
All nodes are organized in 'Category' nodes.
Itemized Master Connection List synchronized with left and right panes.
Filter buttons: Show only selected nodes in left or right pane
Show only routeable nodes in the other (right or left) pane
Show all 200 Midi Ports (else it filters unused/unrouted ones)
- Routing popup menus redone. Test OK, some cosmetic tweaks aside.
Shows Channel Routing matrices, plus easy single-click Omni Routes.
Uniform audio and midi routing popup menus.
Full keyboard support.
- Note: Keyboard action activation for ALL popup menus, including routing,
has been changed from space bar to Enter. Hold ctrl to 'stay open'.
- New: Routing popup menus for Midi Tracks now allow you to do Jack Midi
routing from the menus! Like "Connect this Midi Track to Jack Midi port
XYZ via Midi Port 123:MyJackMidiDeviceName".
- Midi Track to Audio Input routing (for soloing chaining) greatly simplified.
Instead of a cumbersome dual system of Midi Track to Midi Port route and
Midi Port to Audio Input route PER track channel, now it is simply a more
direct Midi Track to Audio Input Omni Route. No 'channels' involved.
This behaviour is different than before, but should still serve the purpose
of soloing chaining.
- Instead of one route for all 16 Midi Track channels using a bit-wise mask for
the Route::channel member, it is now reverted back to one route per channel.
This makes all routing uniform (Route::channel now always means 'a channel'),
no special code for Midi Track routes.
(Applies only to Midi Track input routes for now.)
* File operations:
- A new system of warning users about loading older song file versions
is in place and operational. It uses the MusE File Version number
found in the xml module. Increment it wisely given these new warnings,
especially if 'auto-converters' are 'quietly' enacted while loading.
- Added conversion code to transform older loaded files into the format
which this version currently stands at.
- Saving and loading tests OK so far but may need a few tweaks.
* Midi config dialog:
- New: Device List added, with 'Delete' button.
- New: Command-line flag disables startup 'midi auto-discover/fill devices/ports'.
- Default Jack Midi Device names have been changed.
Instead of 'mirroring' the long Jack Midi port names, helpful but NOT good - a
different Jack port or multiple ports can be connected making the name meaningless -
Midi Devices are now simply named like "Jack Midi 1".
- Fixed improper Native VST version number display in synth list.
23.10.2015
- Moving to 3.0.0 release (danvd)
23.09.2015
- New cpu usage metering algorithm without jack dependency (danvd)
01.07.2015
- Implemented "Normalize wave part" menu item for wave track parts (danvd)
24.06.2015:
- Added information in About box about supported plugins. Feel free to
add more status info! (rj)
30.05.2015:
- Patch from Michele Ballabio to compile muse without LV2 enabled added (rj)
15.05.2015
- Added some missing initializations for native VST synths (rj)