On October 21, 2015 08:14:29 PM Tim E. Real wrote:
> I can give much more details about what has been done if you like.

Here's an ad-hoc ChangeLog (I do lose track!):

1: 
Persistent routes feature complete.
It currently works for Jack audio and midi routes. 

But I am hoping to expand the concept to include persistent 
 Synth Tracks and Rack Plugins and Tracks themselves.
Missing a plugin? No problem, we'll remember even if you save the song, 
 and nothing else will change and no Synth Tracks will be removed.
Switched an Audio Input/Output Track from stereo to mono then back to stereo?
No problem. Unlike current MusE, the second route will still be there.

2-1:
Multi-channel Audio Track routing (any channel to any channel).
Fully functional although I noticed a sound engine bug the other day - 
 an unconnected channel may have repeating nonsense sound data.

Users connect individual Audio or Midi channels with 'Channel Routes', 
 or all at once with 'Omni' Routes (similar to current behaviour).

Here in my code, so far Audio tracks still only have up to two channels 
 (or N synth audio channels), but this feature may help later for actual
 true multi-channel Audio Tracks. That's a whole other discussion 
 which I am happy to entertain at the moment.

2-2:
Midi Track to Audio Input routing (for soloing chaining) greatly simplified.
Instead of a cumbersome dual system of a Midi Track to Midi Port route 
 and a 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 slightly different than before, but it still serves the  
 soloing chaining purpose.

2-3:
Graphical Routing dialog redone and enhanced. Almost fully functional.
Think "super-qjackctl for MusE".
In current MusE it is hidden away under Mixer menu, here I've added it 
 into the routing popup menus as "Open Advanced Router". 
A 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.
Filtering 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)

2-4:
Routing popup menus are redone. Fully functional, tests OK, 
 some cosmetic tweaks (LEDs) aside. 
Shows Channel Routing matrices, plus easy single-click Omni Routes.
Uniform audio and midi routing popup menus.
Keyboard support.

2-5:
Routing popup menus for Midi Tracks now allow you to do Jack Midi routing 
 right from the popup menus! Like this:
"Connect this Midi Track to Jack Midi port XYZ via 
 Midi Port 123:MyJackMidiDeviceName".


* I think item 2-5 was now obviously required because ... ...

3-1:
Default Jack Midi Device names have been changed.
At startup, when MusE 'auto-discovers' Jack Midi ports and
 creates Midi Devices for them and fills up the Midi Ports list 
 with the created devices, each new device requires a name.

Instead of currently 'mirroring' the long Jack Midi port names like:
        "alsa-pcm:Delta-1010-midi-in-1..."
 which is helpful but really NOT good - a different Jack port or multiple 
 ports can later be connected there making this name MEANINGLESS - 
 it instead now names the Midi Devices simply like this:
        "Jack Midi 1", "Jack Midi 2", "Jack Midi 3" etc.
 just like we do with any newly created Track.

* ... ... so you see I needed some way to let the user see actual Jack Midi 
 port names easier from the Midi Track routing popup menus otherwise 
 Midi Port "4:Jack Midi 3" tells them nothing! So the enhanced routing 
 popup menus put the user somewhat 'closer' to the Jack Midi ports.
Still, I'm hoping to add something to the Arranger Track List, to help.

[
Sigh. Werner's muse-evolution branch eliminated Midi Ports. 
He basically merged them with Midi Devices and made them into
 Midi Input and Midi Output Tracks. This put the user somewhat 'closer' 
 to the Jack Midi ports, like Audio Input and Output tracks easier to 
 navigate and fully uniform interface. No 'Midi Config Dialog' and so on.
Controller graphs were allowed to be drawn on these tracks.

I believe we can (should try to) /eliminate/ Midi Ports here in muse-2. 
Banish that pesky static array of 200 of them. They are not required.
Instead each Midi Device has a user-settable ID number which replaces 
 the Midi Port number.
Thus our Midi Devices also become UNLIMITED /virtual/ Midi Ports.
For example, ID virtual port number 1000, even though there may be only
 three real devices in the list.
The devices assimilate all Midi Port properties, particularly Instrument.
I need to discuss that useful but tricky concept. But later.
]


3-2:
Someone (hope they're still out there) requested to be able to turn off
 that 'auto-discover auto-fill Midi Ports' thing mentioned above.
Done. It's now a command-line flag.

4:
Long ago there was no Midi Track 'routing', only port/channel properties.
Then briefly, per-channel midi routes (stored one route per channel).

Then, until now, one route for all 16 channels using a bit-wise mask for the 
 Route::channel member. This was to economize on the number of routes.

I've now reverted it 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.

(For now this applies only to Midi Track input routes.
Sadly for now still no multiple midi track output routes, still only a fixed
 single output port/channel.)

5-1:
A new system of warning users about loading older song file versions 
 is in place and operational. 
("File version is X. Current file version is Y. Conversions may occur if 
 song is saved.")

* There is now a 'current MusE file version number', found in the 
 xml module, which SHOULD BE UPDATED whenever someone changes 
 the file format, especially if it requires conversions to take place. 
In some simple instances (adding a new xml tag property for example) 
 you might get away with leaving it alone to avoid nuisance warnings.
But OTOH maybe it's good practice to increment the sub minor number.

5-2:
Added conversion code to transform older loaded files into the format
 which this branch currently stands at. (See items 2-2, 4 etc.)
Saving and loading tests OK so far but may need a few tweaks.

---

All I can remember for now. 

See ya! Cheers.
Tim.

------------------------------------------------------------------------------
_______________________________________________
Lmuse-developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/lmuse-developer

Reply via email to