Dozens of fixes, new features coming...

MusE is a MIDI/Audio sequencer with recording and editing capabilities, aiming to be a complete multitrack virtual studio for Linux.

Moderators: MattKingUSA, khz, spamatica

Post Reply
Tim E. Real
Established Member
Posts: 371
Joined: Sat Sep 15, 2012 12:36 am

Dozens of fixes, new features coming...

Post by Tim E. Real »

Hi, I thought I would throw this out before anyone gives up and goes away.
I really want to thank the testers who are sticking with us and the level of mutual help is great.

It's really a fine program but I know some things have slipped, even some regressions,
and some things were never done or finished.
So I took a few weeks to take care of some things. (It always happens that way, once I start a few bug fixes I can't stop.)

I've got a branch 'selection_fixes' which I'll merge in maybe several days.
I'll announce properly when merged so that testers and translators can take a look.
I'm excited to bring you dozens of fixes and some new features.
Highlights: (Stuff too long to put in the ChangeLog.)
  • Oops! Where are those note and controller graphics that are supposed to be drawn inside the Arranger parts?
    And a whole lot of other 'single vertical line' missing segments - look closely, edges are missing, lassos partially drawn...
    All of it was simply missing the infamous 'cosmetic pen' setting which appeared in Qt4. We fixed a lot of that
    when we moved from Qt3, but not enough, and a couple of things regressed. Looks great now.

    Redesign of all selection/cut/copy/paste/delete mechanisms, and global vs. local 'functions' dialogs and code.
    Result: Yay! Finally - Cut/Copy/Paste/Delete on all midi controllers graphs.
    Designed to be more WYSIWYG than before, the whole copy/cut/delete/functions side operates ONLY on what you see,
    now including midi controller graphs.
    (Unless you tell it to operate more globally. All function dialogs now have a 'Parts' button group to refine scope.)
    To me that was paramount. I didn't want things being 'Copy'd that maybe were selected in another window
    and unbeknownst to the user would be pasted somewhere in this window out of view.

    Finally! Midi controller graphs no longer wait for sync with audio cycle upon each item drawn by the user.
    With larger audio (Jack) buffer sizes this caused painful sluggish waits for free-drawn graphs with many points,
    regardless of computer speed, as it waited for every point drawn to sync with audio.

    Speaking of graphics, some may think graphics are trivial, but it turns out that with an Arranger containing a few
    Wave tracks and a few Midi tracks, the user simply drawing a lasso causes near-100% CPU usage !
    Ugh. A freakin' lasso.
    First, we were using rectangles for graphic updates, and worse, currently we update the entire Arranger window
    simply from each re-drawing of the lasso ! Way too much.
    Second, even if we did only update the actual lasso area instead of the whole Arranger, it's a moot point
    because if the lasso is big enough, it still gets slow anyway.
    So... I've walked the entire drawing chain - from View::paintEvent() all the way to canvas item drawing -
    and added... you guessed it, QRegions. Now each drawing routine has access to not only the update rectangle as usual
    but now also the complex regions which Qt passes to us to make drawing much more refined and optimized.
    In addition, our humble little lasso object is no longer just a rectangle! It is now a complex region
    made up of four 1-pixel wide sides !
    Result: Lasso drawing is now virtually infinitely faster. I won't quote CPU figures because I'm still optimizing
    the part canvas drawing (especially Wave part drawing) to take advantage of the regions.

    Oh, and one more highlight before I go:
    Added missing mixer strips to Drum editor and Wave editor.
    Yay! Now all the editors have the mixer strip on the left.
    I fixed more stuff in the editors ... Notice how there's an errant vertical splitter bar always near the bottom of the Pianoroll canvas.
For the record, there are also two other very important branches I am working on.
1) The latency_fixes branch. This full-featured latency correction/compensation branch is coming along nicely.
MusE currently does no latency correction. Ouch. I just read a paper a couple of days ago about how Ardour
recently accomplished its latency correction. Yeah, I can dig that, it's really hard. Mine is say, two thirds done.

2) The audio_convert branch. This branch supports audio time-stretching, pitch-shifting, and resampling, on the fly.
You have run-time choices of which stretching libraries to use for which purpose (resample, time-shift or pitch-shift).
Support for new or future libraries is eased with a plugin API.
(I was thinking commercial libraries, new free methods as they come along etc.)
It also transparently opens and plays wave files of any sample rate regardless of current audio sample rate.
It actually works at the moment for what it does, you can stretch or resample Wave tracks and so on.

If you'd like to see these things materialize, I accept donations on our website.

Established Member
Posts: 378
Joined: Thu Sep 01, 2011 9:07 pm

Re: Dozens of fixes, new features coming...

Post by finotti »

I'd just like to thank you for the update and all the team's work on this project! Although I quite like it already, improvements and bug fixes are always welcome!

Established Member
Posts: 1029
Joined: Mon Sep 28, 2015 8:06 pm
Location: Here, of course!

Re: Dozens of fixes, new features coming...

Post by folderol »

Great to hear it.

Established Member
Posts: 64
Joined: Mon Jul 30, 2018 11:04 pm

Re: Dozens of fixes, new features coming...

Post by windowsrefund »

Sounds very awesome! Any chance this could be attacked?

Tim E. Real
Established Member
Posts: 371
Joined: Sat Sep 15, 2012 12:36 am

Re: Dozens of fixes, new features coming...

Post by Tim E. Real »

Psst! Hey, remember me?
My deepest apologies for the delay, I said a few days, it's been 5 months.
Just want to update those paying attention to this thread.

The 'selection_fixes' branch is almost ready to merge into master ! After sooo much work.
After I finished the new cut/copy/paste feature of midi controller graphs, I sat back and realized that
users would never deem that to be enough. "We want drag and drop too !"
Whereupon I set about to add that feature. Whoa! Man, there's trouble !

Unlike the note or drum canvases, the controller graph canvases cannot allow more than one item at a given position.
Thus you cannot simply drag and drop some pieces of the controller graph onto existing pieces and let them co-exist.
It was very tricky. Therefore, there is an additional step after dropping the items called merging.
You must specifically click in a blank area or on a new graph item to 'merge' the dragged items.
Also a right-click context menu is provided with a 'Merge', 'Merge a copy', and 'Cancel drag'.
Also, at any time before the merge, you may press 'Control' to change the 'Merge' mouse cursor into a 'Merge Copy' cursor.

The reason behind it, is that you can drop the items somewhere, release the mouse, and then continue dragging
them further before you choose to merge them. It allows you to say, zoom or scroll and then continue moving the items before merging.
If we were to merge immediately after dropping each time, you would end up with a trail of erased existing items underneath
until there's nothing left of your graph. See what I mean? Tricky.
So, speaking of erasure of existing items, you will see some new options for merging, both in the right-click graph context menu,
and in the newly revamped 'paste with dialog' found in the edit menus.
There you can choose exactly how existing items are erased when the dragged or pasted items are merged.
I provided helpful bitmap icons trying to show what happens with each of the options. It's hard to explain in few words.

I intend to repair and restore drag and drop features (parts, events to/from desktop etc.) that were broken when I
added auto-scrolling to the editors long ago. It used to work, but then auto-scroll took over what happens when you drag stuff.
Also I intend to add the ability to drag and paste controller items from graph-to-graph (and to/from desktop etc.).

If you wonder about the audio controller graphs, well, lessons learned here will apply whenever we get around
to massively overhauling them. (Hint: There will likely need to be a new 'audio controller event' type and 'parts' will need
to be allowed on any audio track type so that they can house these new events. Then they can be easily moved around!)

So, I invite you if you have some spare time, to compare existing MusE with this branch before I merge.
Notice that there are no missing lines, dots etc. All that's been cleaned up.
Notice that the 'grid' lines have been completely made over so as not to become too crowded, especially in the wave editor
and the arranger.
And everything that was mentioned in the first post.
Really it's a massive, massive full graphics and canvas and copy/paste drag/drop makeover.
Don't mind the sawdust! (Thousands of rem'd lines of code to be cleaned.)

Caveat: Small fixes to be done: With 'paste with dialog', if pasting more than one copy of controller items, might be some errors.
Small one-pixel wide graphics glitch with borders of parts in Arranger, clears up immediately when clicked.


Established Member
Posts: 90
Joined: Mon Mar 17, 2014 8:01 pm

Re: Dozens of fixes, new features coming...

Post by artofmusic »

Cool, now I'm waiting for a multichannel surround sound feature as an option in Muse. Mixing stereo can be limiting sometimes. Also, how long before Muse 3.1.0 is unleashed on the masses, it has been over a year since 3.0.2?

Tim E. Real
Established Member
Posts: 371
Joined: Sat Sep 15, 2012 12:36 am

Re: Dozens of fixes, new features coming...

Post by Tim E. Real »

OK it's done!
The selection_fixes branch is now merged into master !

See the ChangeLog for details (or read the above posts).

If all goes well with users, I think it is definitely time for a new release :!:

There was no time for some of the recent requests I've fielded lately.
I'll try to get to them...

But top priority for me now is the latency branch.
Then we can talk multi-channel. We need two latency-trustworthy channels now before multi-channel :wink:
Start a new thread and throw some multi-channel ideas (and wishes!) around if you want.
Much was said in the mailing lists already a few years ago while we talked about it.
We know what needs to be done. A lot of things would need changing. Do a new thread and I'll talk...

Post Reply